From a953328f1fc9efd4f2e64fd4f1dcfaf1e2dd4b2d Mon Sep 17 00:00:00 2001 From: wj <1285151836@qq.com> Date: Fri, 5 May 2023 17:11:42 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index bfbb93cff..788a2796b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: test + active: dev jmx: enabled: false servlet: From 102cf093c231a4261dfc726d639dabb7b994d017 Mon Sep 17 00:00:00 2001 From: wj <1285151836@qq.com> Date: Fri, 5 May 2023 17:12:54 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0replace,replaceBatch,inse?= =?UTF-8?q?rtIgnore,insertIgnoreBatch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/config/CustomerSqlInjector.java | 27 +++++++ .../glxp/api/config/CustomerSqlMethod.java | 28 +++++++ .../com/glxp/api/config/InsertIgnore.java | 49 ++++++++++++ .../glxp/api/config/InsertIgnoreBatch.java | 76 +++++++++++++++++++ .../api/config/MasterDataSourceConfig.java | 1 + .../java/com/glxp/api/config/Replace.java | 40 ++++++++++ .../com/glxp/api/config/ReplaceBatch.java | 69 +++++++++++++++++ .../java/com/glxp/api/dao/BaseMapperPlus.java | 37 +++++++++ .../glxp/api/service/sync/HeartService.java | 32 ++++---- 9 files changed, 343 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/glxp/api/config/CustomerSqlInjector.java create mode 100644 src/main/java/com/glxp/api/config/CustomerSqlMethod.java create mode 100644 src/main/java/com/glxp/api/config/InsertIgnore.java create mode 100644 src/main/java/com/glxp/api/config/InsertIgnoreBatch.java create mode 100644 src/main/java/com/glxp/api/config/Replace.java create mode 100644 src/main/java/com/glxp/api/config/ReplaceBatch.java diff --git a/src/main/java/com/glxp/api/config/CustomerSqlInjector.java b/src/main/java/com/glxp/api/config/CustomerSqlInjector.java new file mode 100644 index 000000000..1f06cb71d --- /dev/null +++ b/src/main/java/com/glxp/api/config/CustomerSqlInjector.java @@ -0,0 +1,27 @@ +package com.glxp.api.config; + +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; +import com.baomidou.mybatisplus.core.metadata.TableInfo; + +import java.util.List; + +/** + * 自定义sql注入器,增加通用方法 + */ +public class CustomerSqlInjector extends DefaultSqlInjector { + + @Override + public List getMethodList(Class mapperClass, TableInfo tableInfo) { + List methodList = super.getMethodList(mapperClass, tableInfo); + // 插入数据,如果中已经存在相同的记录,则忽略当前新数据 + methodList.add(new InsertIgnore()); + // 批量插入数据,如果中已经存在相同的记录,则忽略当前新数据 + methodList.add(new InsertIgnoreBatch()); + // 替换数据,如果中已经存在相同的记录,则覆盖旧数据 + methodList.add(new Replace()); + // 批量替换数据,如果中已经存在相同的记录,则覆盖旧数据 + methodList.add(new ReplaceBatch()); + return methodList; + } +} diff --git a/src/main/java/com/glxp/api/config/CustomerSqlMethod.java b/src/main/java/com/glxp/api/config/CustomerSqlMethod.java new file mode 100644 index 000000000..09dc01b23 --- /dev/null +++ b/src/main/java/com/glxp/api/config/CustomerSqlMethod.java @@ -0,0 +1,28 @@ +package com.glxp.api.config; + +import lombok.Getter; + +/** + * MybatisPlus自定义SQL方法枚举 + */ +@Getter +public enum CustomerSqlMethod { + /** + * 插入 + */ + INSERT_IGNORE_ONE("insertIgnore", "插入一条数据(选择字段插入),如果中已经存在相同的记录,则忽略当前新数据", ""), + /** + * 替换 + */ + REPLACE_ONE("replace", "替换一条数据(选择字段插入),存在则替换,不存在则插入", ""); + + private final String method; + private final String desc; + private final String sql; + + CustomerSqlMethod(String method, String desc, String sql) { + this.method = method; + this.desc = desc; + this.sql = sql; + } +} diff --git a/src/main/java/com/glxp/api/config/InsertIgnore.java b/src/main/java/com/glxp/api/config/InsertIgnore.java new file mode 100644 index 000000000..8b77e9b56 --- /dev/null +++ b/src/main/java/com/glxp/api/config/InsertIgnore.java @@ -0,0 +1,49 @@ +package com.glxp.api.config; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; +import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator; +import org.apache.ibatis.executor.keygen.KeyGenerator; +import org.apache.ibatis.executor.keygen.NoKeyGenerator; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +/** + * 插入一条数据(选择字段插入) + * INSERT IGNORE 表示,如果中已经存在相同的记录,则忽略当前新数据; + */ +public class InsertIgnore extends AbstractMethod { + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + KeyGenerator keyGenerator = new NoKeyGenerator(); + CustomerSqlMethod sqlMethod = CustomerSqlMethod.INSERT_IGNORE_ONE; + String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(null), + LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); + String valuesScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlPropertyMaybeIf(null), + LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); + String keyProperty = null; + String keyColumn = null; + // 表包含主键处理逻辑,如果不包含主键当普通字段处理 + if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) { + if (tableInfo.getIdType() == IdType.AUTO) { + /* 自增主键 */ + keyGenerator = new Jdbc3KeyGenerator(); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } else { + if (null != tableInfo.getKeySequence()) { + keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod.getMethod(), tableInfo, builderAssistant); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } + } + } + String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), columnScript, valuesScript); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource, keyGenerator, keyProperty, keyColumn); + } +} diff --git a/src/main/java/com/glxp/api/config/InsertIgnoreBatch.java b/src/main/java/com/glxp/api/config/InsertIgnoreBatch.java new file mode 100644 index 000000000..3e56a1123 --- /dev/null +++ b/src/main/java/com/glxp/api/config/InsertIgnoreBatch.java @@ -0,0 +1,76 @@ +package com.glxp.api.config; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator; +import org.apache.ibatis.executor.keygen.KeyGenerator; +import org.apache.ibatis.executor.keygen.NoKeyGenerator; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +import java.util.List; +import java.util.function.Predicate; + +/** + * 批量新增数据,自选字段 insert ignore + */ +public class InsertIgnoreBatch extends AbstractMethod { + /** + * mapper 对应的方法名 + */ + private static final String MAPPER_METHOD = "insertIgnoreBatch"; + + /** + * 字段筛选条件 + */ + @Setter + @Accessors(chain = true) + private Predicate predicate; + + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + KeyGenerator keyGenerator = new NoKeyGenerator(); + CustomerSqlMethod sqlMethod = CustomerSqlMethod.INSERT_IGNORE_ONE; + List fieldList = tableInfo.getFieldList(); + String insertSqlColumn = tableInfo.getKeyInsertSqlColumn(false, true) + + this.filterTableFieldInfo(fieldList, predicate, TableFieldInfo::getInsertSqlColumn, EMPTY); + String columnScript = LEFT_BRACKET + insertSqlColumn.substring(0, insertSqlColumn.length() - 1) + RIGHT_BRACKET; + String insertSqlProperty = tableInfo.getKeyInsertSqlProperty(false, ENTITY_DOT, true) + + this.filterTableFieldInfo(fieldList, predicate, i -> i.getInsertSqlProperty(ENTITY_DOT), EMPTY); + insertSqlProperty = LEFT_BRACKET + insertSqlProperty.substring(0, insertSqlProperty.length() - 1) + RIGHT_BRACKET; + String valuesScript = SqlScriptUtils.convertForeach(insertSqlProperty, "list", null, ENTITY, COMMA); + String keyProperty = null; + String keyColumn = null; + // 表包含主键处理逻辑,如果不包含主键当普通字段处理 + if (tableInfo.havePK()) { + if (tableInfo.getIdType() == IdType.AUTO) { + /* 自增主键 */ + keyGenerator = new Jdbc3KeyGenerator(); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } else { + if (null != tableInfo.getKeySequence()) { + keyGenerator = TableInfoHelper.genKeyGenerator(MAPPER_METHOD, tableInfo, builderAssistant); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } + } + } + String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), columnScript, valuesScript); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addInsertMappedStatement(mapperClass, modelClass, MAPPER_METHOD, sqlSource, keyGenerator, keyProperty, keyColumn); + } + + @Override + public String getMethod(SqlMethod sqlMethod) { + // 自定义 mapper 方法名 + return MAPPER_METHOD; + } +} diff --git a/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java b/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java index a0c48d97e..6833f5144 100644 --- a/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java +++ b/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java @@ -56,6 +56,7 @@ public class MasterDataSourceConfig { final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); sessionFactory.setDataSource(masterDataSource); sessionFactory.setConfiguration(configuration); + globalConfig.setSqlInjector(new CustomerSqlInjector()); sessionFactory.setGlobalConfig(globalConfig); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(MasterDataSourceConfig.MAPPER_LOCATION)); diff --git a/src/main/java/com/glxp/api/config/Replace.java b/src/main/java/com/glxp/api/config/Replace.java new file mode 100644 index 000000000..2968293c0 --- /dev/null +++ b/src/main/java/com/glxp/api/config/Replace.java @@ -0,0 +1,40 @@ +package com.glxp.api.config; + +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; +import org.apache.ibatis.executor.keygen.KeyGenerator; +import org.apache.ibatis.executor.keygen.NoKeyGenerator; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +/** + * 替换数据实现类 + * 替换数据,如果中已经存在相同的记录,则覆盖旧数据 + */ +public class Replace extends AbstractMethod { + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + KeyGenerator keyGenerator = new NoKeyGenerator(); + CustomerSqlMethod sqlMethod = CustomerSqlMethod.REPLACE_ONE; + String columnScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlColumnMaybeIf(null), + LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); + String valuesScript = SqlScriptUtils.convertTrim(tableInfo.getAllInsertSqlPropertyMaybeIf(null), + LEFT_BRACKET, RIGHT_BRACKET, null, COMMA); + String keyProperty = null; + String keyColumn = null; + // 表包含主键处理逻辑,如果不包含主键当普通字段处理 + if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) { + if (null != tableInfo.getKeySequence()) { + keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod.getMethod(), tableInfo, builderAssistant); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } + } + String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), columnScript, valuesScript); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addInsertMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource, keyGenerator, keyProperty, keyColumn); + } +} diff --git a/src/main/java/com/glxp/api/config/ReplaceBatch.java b/src/main/java/com/glxp/api/config/ReplaceBatch.java new file mode 100644 index 000000000..20194c696 --- /dev/null +++ b/src/main/java/com/glxp/api/config/ReplaceBatch.java @@ -0,0 +1,69 @@ +package com.glxp.api.config; + +import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.apache.ibatis.executor.keygen.KeyGenerator; +import org.apache.ibatis.executor.keygen.NoKeyGenerator; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +import java.util.List; +import java.util.function.Predicate; + +/** + * 替换数据实现类 + * 替换数据,如果中已经存在相同的记录,则覆盖旧数据 + */ +public class ReplaceBatch extends AbstractMethod { + /** + * mapper 对应的方法名 + */ + private static final String MAPPER_METHOD = "replaceBatch"; + + /** + * 字段筛选条件 + */ + @Setter + @Accessors(chain = true) + private Predicate predicate; + + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + KeyGenerator keyGenerator = new NoKeyGenerator(); + CustomerSqlMethod sqlMethod = CustomerSqlMethod.REPLACE_ONE; + List fieldList = tableInfo.getFieldList(); + 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; + String insertSqlProperty = tableInfo.getKeyInsertSqlProperty(true, ENTITY_DOT, true) + + this.filterTableFieldInfo(fieldList, predicate, i -> i.getInsertSqlProperty(ENTITY_DOT), EMPTY); + insertSqlProperty = LEFT_BRACKET + insertSqlProperty.substring(0, insertSqlProperty.length() - 1) + RIGHT_BRACKET; + String valuesScript = SqlScriptUtils.convertForeach(insertSqlProperty, "list", null, ENTITY, COMMA); + String keyProperty = null; + String keyColumn = null; + // 表包含主键处理逻辑,如果不包含主键当普通字段处理 + if (StringUtils.isNotBlank(tableInfo.getKeyProperty())) { + if (null != tableInfo.getKeySequence()) { + keyGenerator = TableInfoHelper.genKeyGenerator(sqlMethod.getMethod(), tableInfo, builderAssistant); + keyProperty = tableInfo.getKeyProperty(); + keyColumn = tableInfo.getKeyColumn(); + } + } + String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), columnScript, valuesScript); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addInsertMappedStatement(mapperClass, modelClass, MAPPER_METHOD, sqlSource, keyGenerator, keyProperty, keyColumn); + } + + @Override + public String getMethod(SqlMethod sqlMethod) { + // 自定义 mapper 方法名 + return MAPPER_METHOD; + } +} diff --git a/src/main/java/com/glxp/api/dao/BaseMapperPlus.java b/src/main/java/com/glxp/api/dao/BaseMapperPlus.java index 25fe5aaae..59eb52bd1 100644 --- a/src/main/java/com/glxp/api/dao/BaseMapperPlus.java +++ b/src/main/java/com/glxp/api/dao/BaseMapperPlus.java @@ -226,4 +226,41 @@ public interface BaseMapperPlus extends BaseMapper { return (P) voPage; } + /** + * 插入数据,如果中已经存在相同的记录,则忽略当前新数据 + * {@link com.glxp.api.config.InsertIgnore} + * + * @param entity 实体类 + * @return 影响条数 + */ + int insertIgnore(T entity); + + /** + * 批量插入数据,如果中已经存在相同的记录,则忽略当前新数据 + * {@link com.glxp.api.config.InsertIgnoreBatch} + * + * @param entityList 实体类列表 + * @return 影响条数 + */ + int insertIgnoreBatch(List entityList); + + /** + * 替换数据 + * replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; + * {@link com.glxp.api.config.Replace} + * + * @param entity 实体类 + * @return 影响条数 + */ + int replace(T entity); + + /** + * 批量替换数据 + * replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; + * {@link com.glxp.api.config.ReplaceBatch} + * + * @param entityList 实体类列表 + * @return 影响条数 + */ + int replaceBatch(List entityList); } diff --git a/src/main/java/com/glxp/api/service/sync/HeartService.java b/src/main/java/com/glxp/api/service/sync/HeartService.java index 641330c91..ba595a2cc 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -1603,34 +1603,34 @@ public class HeartService { List syncFiles = JSONUtil.toList(jsonObject.getJSONArray("syncFiles"), String.class); if (CollectionUtil.isNotEmpty(hospTypeList)) { - basicHospTypeDao.insertOrUpdateBatch(hospTypeList); + basicHospTypeDao.replaceBatch(hospTypeList); } if (CollectionUtil.isNotEmpty(udiRelevanceList)) { - udiRelevanceDao.insertOrUpdateBatch(udiRelevanceList); + udiRelevanceDao.replaceBatch(udiRelevanceList); } if (CollectionUtil.isNotEmpty(productsList)) { - basicProductsDao.insertOrUpdateBatch(productsList); + basicProductsDao.replaceBatch(productsList); } if (CollectionUtil.isNotEmpty(relevanceList)) { - relevanceDao.insertOrUpdateBatch(relevanceList); + relevanceDao.replaceBatch(relevanceList); } if (CollectionUtil.isNotEmpty(corpList)) { - corpDao.insertOrUpdateBatch(corpList); + corpDao.replaceBatch(corpList); } if (CollectionUtil.isNotEmpty(supCertList)) { - supCertDao.insertOrUpdateBatch(supCertList); + supCertDao.replaceBatch(supCertList); } if (CollectionUtil.isNotEmpty(supCertSetList)) { - supCertSetDao.insertOrUpdateBatch(supCertSetList); + supCertSetDao.replaceBatch(supCertSetList); } if (CollectionUtil.isNotEmpty(supCompanyList)) { - supCompanyDao.insertOrUpdateBatch(supCompanyList); + supCompanyDao.replaceBatch(supCompanyList); } if (CollectionUtil.isNotEmpty(supManufacturerList)) { - supManufacturerDao.insertOrUpdateBatch(supManufacturerList); + supManufacturerDao.replaceBatch(supManufacturerList); } if (CollectionUtil.isNotEmpty(supProductList)) { - supProductDao.insertOrUpdateBatch(supProductList); + supProductDao.replaceBatch(supProductList); } if (CollUtil.isNotEmpty(syncFiles)) { fileService.download(syncFiles); @@ -1659,13 +1659,13 @@ public class HeartService { List ioOrderInvoiceEntities = JSONUtil.toList(jsonObject.getJSONArray(IoOrderInvoiceEntity.class.getSimpleName()), IoOrderInvoiceEntity.class); if (CollectionUtil.isNotEmpty(ioCodeLostList)) { - ioCodeLostMapper.insertOrUpdateBatch(ioCodeLostList); + ioCodeLostMapper.replaceBatch(ioCodeLostList); } if (CollectionUtil.isNotEmpty(ioCodeRelList)) { - ioCodeRelMapper.insertOrUpdateBatch(ioCodeRelList); + ioCodeRelMapper.replaceBatch(ioCodeRelList); } if (CollUtil.isNotEmpty(ioOrderInvoiceEntities)) { - ioOrderInvoiceMapper.insertOrUpdateBatch(ioOrderInvoiceEntities); + ioOrderInvoiceMapper.replaceBatch(ioOrderInvoiceEntities); } List syncFiles = JSONUtil.toList(jsonObject.getJSONArray("syncFiles"), String.class); @@ -1691,13 +1691,13 @@ public class HeartService { List busTypeChangeEntities = JSONUtil.toList(jsonObject.getJSONArray(BasicBusTypeChangeEntity.class.getSimpleName()), BasicBusTypeChangeEntity.class); List typeOriginEntities = JSONUtil.toList(jsonObject.getJSONArray(ThrBusTypeOriginEntity.class.getSimpleName()), ThrBusTypeOriginEntity.class); if (CollectionUtil.isNotEmpty(bussinessTypeEntities)) { - bussinessTypeDao.insertOrUpdateBatch(bussinessTypeEntities); + bussinessTypeDao.replaceBatch(bussinessTypeEntities); } if (CollectionUtil.isNotEmpty(busTypeChangeEntities)) { - busTypeChangeDao.insertOrUpdateBatch(busTypeChangeEntities); + busTypeChangeDao.replaceBatch(busTypeChangeEntities); } if (CollectionUtil.isNotEmpty(typeOriginEntities)) { - thrBusTypeOriginDao.insertOrUpdateBatch(typeOriginEntities); + thrBusTypeOriginDao.replaceBatch(typeOriginEntities); } } From 2311c643cc525080cb48ef39b6ef1e70660807eb Mon Sep 17 00:00:00 2001 From: wj <1285151836@qq.com> Date: Fri, 5 May 2023 17:14:14 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4dev?= =?UTF-8?q?=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 788a2796b..80e18f1ee 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,7 +8,7 @@ spring: enabled: true max-file-size: 200MB max-request-size: 200MB - location: /tmp + location: D:/tmp mybatis-plus: mapper-locations: classpath:mybatis/mapper/*/*.xml From 5208a1aea2b3b75a1f348cc0d758c268b79eef85 Mon Sep 17 00:00:00 2001 From: wj <1285151836@qq.com> Date: Fri, 5 May 2023 18:02:54 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=8B=89=E5=8F=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/glxp/api/service/sync/HeartService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/glxp/api/service/sync/HeartService.java b/src/main/java/com/glxp/api/service/sync/HeartService.java index ba595a2cc..bf3e6b721 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -1527,6 +1527,11 @@ public class HeartService { */ @Transactional(rollbackFor = Exception.class) public void pullData(BasicExportTypeEnum exportType) { + switch (exportType){ + case IO_ORDER: + case COUNTRY_DI_DATA: + return; + } Date startTime = new Date(); String data = spGetHttp.pullData(exportType); From 4d7ec96bdaea43a51140ac138ee33a09bd851ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=A2=81?= <2429105222@qq.com> Date: Sat, 6 May 2023 11:38:17 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=89=A9=E8=B4=A8=E6=91=86=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/inv/InvPlaceOrderDetailEntity.java | 17 +++ .../api/entity/inv/InvPlaceOrderEntity.java | 4 + .../inv/impl/InvPlaceOrderServiceImpl.java | 106 +++++++++++++++--- .../service/inv/impl/InvPlaceServiceImpl.java | 37 ++++-- .../mybatis/mapper/inv/InvPlaceOrderDao.xml | 14 +-- .../mapper/inv/InvPlaceOrderDetailDao.xml | 4 +- 6 files changed, 146 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java index 72771ce39..b13f7e6cf 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java @@ -55,4 +55,21 @@ public class InvPlaceOrderDetailEntity { @TableField(value = "`count`") private Integer count; + @TableField(value = "nameCode") + private String nameCode; + + @TableField(value = "supId") + private String supId; + + @TableField(value = "produceDate") + private String produceDate; + + @TableField(value = "expireDate") + private String expireDate; + + @TableField(value = "serialNo") + private String serialNo; + + + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java index c8d3cf1e7..7915d2ad1 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java @@ -60,4 +60,8 @@ public class InvPlaceOrderEntity { @TableField(value = "remark") private String remark; + @TableField(value = "count") + private int count; + + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java index 59d132a84..a18dd2411 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java @@ -8,10 +8,11 @@ import com.github.pagehelper.PageHelper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; -import com.glxp.api.dao.inv.InvPlaceOrderDao; -import com.glxp.api.dao.inv.InvPlaceOrderDetailDao; -import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; -import com.glxp.api.entity.inv.InvPlaceOrderEntity; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.dao.auth.InvWarehouseDao; +import com.glxp.api.dao.inv.*; +import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.inv.*; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceRequest; @@ -20,6 +21,7 @@ import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; import com.glxp.api.res.inv.InvPlaceOrderResponse; import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inv.InvPlaceOrderService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; @@ -45,6 +47,15 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { private CustomerService customerService; @Resource private GennerOrderUtils gennerOrderUtils; + @Resource + private InvWarehouseDao invWarehouseDao; + @Resource + private InvProductDetailDao invProductDetailDao; + @Resource + private InvPreProductDetailDao invPreProductDetailDao; + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; + @Override public List filterList(FilterInvPlaceOrderRequest filterInvPlaceOrderRequest) { @@ -106,11 +117,57 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { // ew.isNull("invSpaceCode"); // ew. // invPreInProductDetailDao.selectOne() + Long relId = null; + String batchNo = null; + String nameCode = null; + String supId = null; + String produceDate = null; + String expireDate = null; + String serialNo = null; + InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", bindInvSpaceRequest.getInvCode())); + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvPreInProductDetailEntity invPreInProductDetailEntity = invPreInProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvPreProductDetailEntity invPreInProductDetailEntity = invPreProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_NORMAL) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvProductDetailEntity invPreInProductDetailEntity = invProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } + //判断是不是第一次进行添加 是就插入一条主表 String recordId = ""; - if(StrUtil.isEmpty(bindInvSpaceRequest.getOrderId())){ - InvPlaceOrderEntity invPlaceOrderEntity=new InvPlaceOrderEntity(); + if (StrUtil.isEmpty(bindInvSpaceRequest.getOrderId())) { + InvPlaceOrderEntity invPlaceOrderEntity = new InvPlaceOrderEntity(); //操作人ID String userId = customerService.getUserIdStr(); @@ -126,39 +183,52 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { invPlaceOrderDao.insert(orderEntity); //插入附表 - InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity = new InvPlaceOrderDetailEntity(); invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); invPlaceOrderDetailEntity.setRecordId(recordId); + invPlaceOrderDetailEntity.setBatchNo(batchNo); + invPlaceOrderDetailEntity.setRelId(relId+""); + invPlaceOrderDetailEntity.setNameCode(nameCode); + invPlaceOrderDetailEntity.setExpireDate(expireDate); + invPlaceOrderDetailEntity.setProduceDate(produceDate); + invPlaceOrderDetailEntity.setSupId(supId); invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); + invPlaceOrderDetailEntity.setSerialNo(serialNo); invPlaceOrderDetailEntity.setCount(1); invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); - }else{ - recordId=bindInvSpaceRequest.getOrderId(); + } else { + recordId = bindInvSpaceRequest.getOrderId(); //查询有没有存在一样的code有就加数量没有新增 - QueryWrapper ew=new QueryWrapper<>(); - ew.eq("recordId",bindInvSpaceRequest.getOrderId()); - ew.eq("code",bindInvSpaceRequest.getCode()); - InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=invPlaceOrderDetailDao.selectOne(ew); - if(invPlaceOrderDetailEntity!=null){ - invPlaceOrderDetailEntity.setCount(invPlaceOrderDetailEntity.getCount()+1); + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("recordId", bindInvSpaceRequest.getOrderId()); + ew.eq("code", bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity = invPlaceOrderDetailDao.selectOne(ew); + if (invPlaceOrderDetailEntity != null) { + invPlaceOrderDetailEntity.setCount(invPlaceOrderDetailEntity.getCount() + 1); invPlaceOrderDetailDao.updateById(invPlaceOrderDetailEntity); - }else{ + } else { //插入附表 - invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + invPlaceOrderDetailEntity = new InvPlaceOrderDetailEntity(); invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); invPlaceOrderDetailEntity.setRecordId(bindInvSpaceRequest.getOrderId()); invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); + invPlaceOrderDetailEntity.setBatchNo(batchNo); + invPlaceOrderDetailEntity.setRelId(relId+""); + invPlaceOrderDetailEntity.setNameCode(nameCode); + invPlaceOrderDetailEntity.setExpireDate(expireDate); + invPlaceOrderDetailEntity.setProduceDate(produceDate); + invPlaceOrderDetailEntity.setSupId(supId); invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); invPlaceOrderDetailEntity.setCount(1); + invPlaceOrderDetailEntity.setSerialNo(serialNo); invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); } } - return ResultVOUtils.success(recordId); } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java index 4131ff70c..a34a29ba6 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java @@ -80,12 +80,12 @@ public class InvPlaceServiceImpl implements InvPlaceService { @Override public BaseResponse bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) { //查询仓库的部门ID - String deptCode = invWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); +// String deptCode = invWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); InvWarehouseEntity invWarehouseEntity = invWarehouseDao.filterGroupInvSubAndcode(bindInvSpaceRequest.getInvCode()); + List invPlaceOrderDetailEntityList=new ArrayList<>(); - List list = new ArrayList<>(); if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -93,14 +93,16 @@ public class InvPlaceServiceImpl implements InvPlaceService { QueryWrapper ew=new QueryWrapper<>(); ew.eq("code",invPlaceOrderDetailEntity.getCode()); ew.and(o-> o.isNull("invSpaceCode").or().eq("invSpaceCode","")); - ew.gt("inCount",0); ew.last("limit 1"); InvPreInProductDetailEntity invPreInProductDetailEntity=invPreInProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invPreInProductDetailDao.updateById(invPreInProductDetailEntity); @@ -112,11 +114,13 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invPreInProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); invPreInProductDetailEntity.setInCount(1); invPreInProductDetailEntity.setCount(1); + invPreInProductDetailEntity.setReCount(reCount); invPreInProductDetailEntity.setOutCount(0); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); invPreInProductDetailDao.insert(invPreInProductDetailEntity); @@ -128,7 +132,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -141,9 +145,11 @@ public class InvPlaceServiceImpl implements InvPlaceService { ew.last("limit 1"); InvPreProductDetailEntity invPreInProductDetailEntity=invPreProductDetailDao.selectOne(ew); if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invPreProductDetailDao.updateById(invPreInProductDetailEntity); @@ -155,6 +161,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invPreProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); @@ -162,6 +169,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { invPreInProductDetailEntity.setCount(1); invPreInProductDetailEntity.setOutCount(0); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); + invPreInProductDetailEntity.setReCount(reCount); invPreProductDetailDao.insert(invPreInProductDetailEntity); } } @@ -169,7 +177,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { } } else { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -182,9 +190,11 @@ public class InvPlaceServiceImpl implements InvPlaceService { ew.last("limit 1"); InvProductDetailEntity invPreInProductDetailEntity=invProductDetailDao.selectOne(ew); if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invProductDetailDao.updateById(invPreInProductDetailEntity); @@ -196,12 +206,14 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); invPreInProductDetailEntity.setInCount(1); invPreInProductDetailEntity.setCount(1); invPreInProductDetailEntity.setOutCount(0); + invPreInProductDetailEntity.setReCount(reCount); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); invProductDetailDao.insert(invPreInProductDetailEntity); } @@ -210,6 +222,13 @@ public class InvPlaceServiceImpl implements InvPlaceService { } } + int total = invPlaceOrderDetailEntityList.stream().mapToInt(InvPlaceOrderDetailEntity::getCount).sum(); + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + InvPlaceOrderEntity invPlaceOrderEntity=new InvPlaceOrderEntity(); + invPlaceOrderEntity.setRecordId(bindInvSpaceRequest.getOrderId()); + invPlaceOrderEntity.setCount(total); + invPlaceOrderDao.update(invPlaceOrderEntity,ew); // if (CollUtil.isNotEmpty(list)) { // List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); diff --git a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml index 7a67174a1..50948955f 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml @@ -8,6 +8,7 @@ t2.invCode, t2.invSpaceCode, t.createUser, + t.count as count, (select employeeName from auth_user where id = t.createUser) operatorName, (select name from auth_warehouse where code = t2.invCode) invName, (select name from auth_space where code = t2.invSpaceCode) invSpaceName, @@ -17,20 +18,17 @@ t2.relId, bp.cpmctymc productName, bp.ggxh, - pd.produceDate productionDate, - pd.expireDate, + t2.produceDate productionDate, + t2.expireDate, bp.nameCode, bp.zczbhhzbapzbh, bp.ylqxzcrbarmc, - (select name from basic_corp where erpId = pd.supId) supName, - pd.serialNo, + (select name from basic_corp where erpId = t2.supId) supName, + t2.serialNo, bp.manufactory, bp.measname from inv_place_order t right join inv_place_order_detail t2 on t.recordId = t2.recordId - left join inv_product_detail pd - on t2.invCode = pd.invCode and t2.invSpaceCode = pd.invSpaceCode and t2.relId = pd.relId - and t2.code = pd.code left join basic_udirel bu on bu.id = t2.relId left join basic_products bp on bp.uuid = bu.uuid @@ -65,6 +63,6 @@ and bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%') - group by t2.code + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml index 94f90ec68..248cdf3dc 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml @@ -14,7 +14,9 @@ bp.measname, bp.zczbhhzbapzbh, bp.manufactory, - asp.name as invSpaceName + asp.name as invSpaceName, + bp.nameCode, + (select name from basic_corp where erpId = a2.supId) supName FROM inv_place_order_detail a1 LEFT JOIN inv_prein_product_detail a2 ON a1.CODE = a2.CODE From fa09ca70780ffb886c44493cd61647eae625cd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=A2=81?= <2429105222@qq.com> Date: Sat, 6 May 2023 11:38:17 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=89=A9=E8=B4=A8=E6=91=86=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit e880330e7cff54d829d2c21b76bd70412f084a5b) --- .../entity/inv/InvPlaceOrderDetailEntity.java | 17 +++ .../api/entity/inv/InvPlaceOrderEntity.java | 4 + .../inv/impl/InvPlaceOrderServiceImpl.java | 106 +++++++++++++++--- .../service/inv/impl/InvPlaceServiceImpl.java | 37 ++++-- .../mybatis/mapper/inv/InvPlaceOrderDao.xml | 14 +-- .../mapper/inv/InvPlaceOrderDetailDao.xml | 4 +- 6 files changed, 146 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java index 72771ce39..b13f7e6cf 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java @@ -55,4 +55,21 @@ public class InvPlaceOrderDetailEntity { @TableField(value = "`count`") private Integer count; + @TableField(value = "nameCode") + private String nameCode; + + @TableField(value = "supId") + private String supId; + + @TableField(value = "produceDate") + private String produceDate; + + @TableField(value = "expireDate") + private String expireDate; + + @TableField(value = "serialNo") + private String serialNo; + + + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java index c8d3cf1e7..7915d2ad1 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java @@ -60,4 +60,8 @@ public class InvPlaceOrderEntity { @TableField(value = "remark") private String remark; + @TableField(value = "count") + private int count; + + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java index 59d132a84..a18dd2411 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java @@ -8,10 +8,11 @@ import com.github.pagehelper.PageHelper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; -import com.glxp.api.dao.inv.InvPlaceOrderDao; -import com.glxp.api.dao.inv.InvPlaceOrderDetailDao; -import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; -import com.glxp.api.entity.inv.InvPlaceOrderEntity; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.dao.auth.InvWarehouseDao; +import com.glxp.api.dao.inv.*; +import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.inv.*; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceRequest; @@ -20,6 +21,7 @@ import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; import com.glxp.api.res.inv.InvPlaceOrderResponse; import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inv.InvPlaceOrderService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; @@ -45,6 +47,15 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { private CustomerService customerService; @Resource private GennerOrderUtils gennerOrderUtils; + @Resource + private InvWarehouseDao invWarehouseDao; + @Resource + private InvProductDetailDao invProductDetailDao; + @Resource + private InvPreProductDetailDao invPreProductDetailDao; + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; + @Override public List filterList(FilterInvPlaceOrderRequest filterInvPlaceOrderRequest) { @@ -106,11 +117,57 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { // ew.isNull("invSpaceCode"); // ew. // invPreInProductDetailDao.selectOne() + Long relId = null; + String batchNo = null; + String nameCode = null; + String supId = null; + String produceDate = null; + String expireDate = null; + String serialNo = null; + InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", bindInvSpaceRequest.getInvCode())); + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvPreInProductDetailEntity invPreInProductDetailEntity = invPreInProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvPreProductDetailEntity invPreInProductDetailEntity = invPreProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_NORMAL) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("code", bindInvSpaceRequest.getCode()); + ew.last("limit 1"); + InvProductDetailEntity invPreInProductDetailEntity = invProductDetailDao.selectOne(ew); + relId = invPreInProductDetailEntity.getRelId(); + batchNo = invPreInProductDetailEntity.getBatchNo(); + nameCode = invPreInProductDetailEntity.getNameCode(); + supId = invPreInProductDetailEntity.getSupId(); + produceDate = invPreInProductDetailEntity.getProduceDate(); + expireDate = invPreInProductDetailEntity.getExpireDate(); + serialNo = invPreInProductDetailEntity.getSerialNo(); + } + //判断是不是第一次进行添加 是就插入一条主表 String recordId = ""; - if(StrUtil.isEmpty(bindInvSpaceRequest.getOrderId())){ - InvPlaceOrderEntity invPlaceOrderEntity=new InvPlaceOrderEntity(); + if (StrUtil.isEmpty(bindInvSpaceRequest.getOrderId())) { + InvPlaceOrderEntity invPlaceOrderEntity = new InvPlaceOrderEntity(); //操作人ID String userId = customerService.getUserIdStr(); @@ -126,39 +183,52 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { invPlaceOrderDao.insert(orderEntity); //插入附表 - InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity = new InvPlaceOrderDetailEntity(); invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); invPlaceOrderDetailEntity.setRecordId(recordId); + invPlaceOrderDetailEntity.setBatchNo(batchNo); + invPlaceOrderDetailEntity.setRelId(relId+""); + invPlaceOrderDetailEntity.setNameCode(nameCode); + invPlaceOrderDetailEntity.setExpireDate(expireDate); + invPlaceOrderDetailEntity.setProduceDate(produceDate); + invPlaceOrderDetailEntity.setSupId(supId); invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); + invPlaceOrderDetailEntity.setSerialNo(serialNo); invPlaceOrderDetailEntity.setCount(1); invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); - }else{ - recordId=bindInvSpaceRequest.getOrderId(); + } else { + recordId = bindInvSpaceRequest.getOrderId(); //查询有没有存在一样的code有就加数量没有新增 - QueryWrapper ew=new QueryWrapper<>(); - ew.eq("recordId",bindInvSpaceRequest.getOrderId()); - ew.eq("code",bindInvSpaceRequest.getCode()); - InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=invPlaceOrderDetailDao.selectOne(ew); - if(invPlaceOrderDetailEntity!=null){ - invPlaceOrderDetailEntity.setCount(invPlaceOrderDetailEntity.getCount()+1); + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("recordId", bindInvSpaceRequest.getOrderId()); + ew.eq("code", bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity = invPlaceOrderDetailDao.selectOne(ew); + if (invPlaceOrderDetailEntity != null) { + invPlaceOrderDetailEntity.setCount(invPlaceOrderDetailEntity.getCount() + 1); invPlaceOrderDetailDao.updateById(invPlaceOrderDetailEntity); - }else{ + } else { //插入附表 - invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + invPlaceOrderDetailEntity = new InvPlaceOrderDetailEntity(); invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); invPlaceOrderDetailEntity.setRecordId(bindInvSpaceRequest.getOrderId()); invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); + invPlaceOrderDetailEntity.setBatchNo(batchNo); + invPlaceOrderDetailEntity.setRelId(relId+""); + invPlaceOrderDetailEntity.setNameCode(nameCode); + invPlaceOrderDetailEntity.setExpireDate(expireDate); + invPlaceOrderDetailEntity.setProduceDate(produceDate); + invPlaceOrderDetailEntity.setSupId(supId); invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); invPlaceOrderDetailEntity.setCount(1); + invPlaceOrderDetailEntity.setSerialNo(serialNo); invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); } } - return ResultVOUtils.success(recordId); } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java index 4131ff70c..a34a29ba6 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java @@ -80,12 +80,12 @@ public class InvPlaceServiceImpl implements InvPlaceService { @Override public BaseResponse bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) { //查询仓库的部门ID - String deptCode = invWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); +// String deptCode = invWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); InvWarehouseEntity invWarehouseEntity = invWarehouseDao.filterGroupInvSubAndcode(bindInvSpaceRequest.getInvCode()); + List invPlaceOrderDetailEntityList=new ArrayList<>(); - List list = new ArrayList<>(); if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -93,14 +93,16 @@ public class InvPlaceServiceImpl implements InvPlaceService { QueryWrapper ew=new QueryWrapper<>(); ew.eq("code",invPlaceOrderDetailEntity.getCode()); ew.and(o-> o.isNull("invSpaceCode").or().eq("invSpaceCode","")); - ew.gt("inCount",0); ew.last("limit 1"); InvPreInProductDetailEntity invPreInProductDetailEntity=invPreInProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invPreInProductDetailDao.updateById(invPreInProductDetailEntity); @@ -112,11 +114,13 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invPreInProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); invPreInProductDetailEntity.setInCount(1); invPreInProductDetailEntity.setCount(1); + invPreInProductDetailEntity.setReCount(reCount); invPreInProductDetailEntity.setOutCount(0); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); invPreInProductDetailDao.insert(invPreInProductDetailEntity); @@ -128,7 +132,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -141,9 +145,11 @@ public class InvPlaceServiceImpl implements InvPlaceService { ew.last("limit 1"); InvPreProductDetailEntity invPreInProductDetailEntity=invPreProductDetailDao.selectOne(ew); if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invPreProductDetailDao.updateById(invPreInProductDetailEntity); @@ -155,6 +161,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invPreProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); @@ -162,6 +169,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { invPreInProductDetailEntity.setCount(1); invPreInProductDetailEntity.setOutCount(0); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); + invPreInProductDetailEntity.setReCount(reCount); invPreProductDetailDao.insert(invPreInProductDetailEntity); } } @@ -169,7 +177,7 @@ public class InvPlaceServiceImpl implements InvPlaceService { } } else { - List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { @@ -182,9 +190,11 @@ public class InvPlaceServiceImpl implements InvPlaceService { ew.last("limit 1"); InvProductDetailEntity invPreInProductDetailEntity=invProductDetailDao.selectOne(ew); if(invPreInProductDetailEntity.getInCount()>0){ + String nameCode=invPreInProductDetailEntity.getNameCode(); + int reCount=getActCount(nameCode); invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); -// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-reCount); invProductDetailDao.updateById(invPreInProductDetailEntity); @@ -196,12 +206,14 @@ public class InvPlaceServiceImpl implements InvPlaceService { if(invPreInProductDetailEntity1!=null){ invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailEntity1.setReCount(invPreInProductDetailEntity1.getReCount()+reCount); invProductDetailDao.updateById(invPreInProductDetailEntity1); }else{ invPreInProductDetailEntity.setId(null); invPreInProductDetailEntity.setInCount(1); invPreInProductDetailEntity.setCount(1); invPreInProductDetailEntity.setOutCount(0); + invPreInProductDetailEntity.setReCount(reCount); invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); invProductDetailDao.insert(invPreInProductDetailEntity); } @@ -210,6 +222,13 @@ public class InvPlaceServiceImpl implements InvPlaceService { } } + int total = invPlaceOrderDetailEntityList.stream().mapToInt(InvPlaceOrderDetailEntity::getCount).sum(); + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + InvPlaceOrderEntity invPlaceOrderEntity=new InvPlaceOrderEntity(); + invPlaceOrderEntity.setRecordId(bindInvSpaceRequest.getOrderId()); + invPlaceOrderEntity.setCount(total); + invPlaceOrderDao.update(invPlaceOrderEntity,ew); // if (CollUtil.isNotEmpty(list)) { // List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); diff --git a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml index 7a67174a1..50948955f 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDao.xml @@ -8,6 +8,7 @@ t2.invCode, t2.invSpaceCode, t.createUser, + t.count as count, (select employeeName from auth_user where id = t.createUser) operatorName, (select name from auth_warehouse where code = t2.invCode) invName, (select name from auth_space where code = t2.invSpaceCode) invSpaceName, @@ -17,20 +18,17 @@ t2.relId, bp.cpmctymc productName, bp.ggxh, - pd.produceDate productionDate, - pd.expireDate, + t2.produceDate productionDate, + t2.expireDate, bp.nameCode, bp.zczbhhzbapzbh, bp.ylqxzcrbarmc, - (select name from basic_corp where erpId = pd.supId) supName, - pd.serialNo, + (select name from basic_corp where erpId = t2.supId) supName, + t2.serialNo, bp.manufactory, bp.measname from inv_place_order t right join inv_place_order_detail t2 on t.recordId = t2.recordId - left join inv_product_detail pd - on t2.invCode = pd.invCode and t2.invSpaceCode = pd.invSpaceCode and t2.relId = pd.relId - and t2.code = pd.code left join basic_udirel bu on bu.id = t2.relId left join basic_products bp on bp.uuid = bu.uuid @@ -65,6 +63,6 @@ and bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%') - group by t2.code + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml index 94f90ec68..248cdf3dc 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml @@ -14,7 +14,9 @@ bp.measname, bp.zczbhhzbapzbh, bp.manufactory, - asp.name as invSpaceName + asp.name as invSpaceName, + bp.nameCode, + (select name from basic_corp where erpId = a2.supId) supName FROM inv_place_order_detail a1 LEFT JOIN inv_prein_product_detail a2 ON a1.CODE = a2.CODE