diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/CustomPlateNoServiceHandler.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/CustomPlateNoServiceHandler.java index 635ca252c..c8ed54db4 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/CustomPlateNoServiceHandler.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/CustomPlateNoServiceHandler.java @@ -32,6 +32,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -69,23 +70,18 @@ public class CustomPlateNoServiceHandler extends AbstractSystemConfigServiceHand public List selectList(ConfigPageReqVO pageReqVO) { SystemConfigTypeEnum customPlateNoEnum = SystemConfigTypeEnum.CUSTOM_PLATE_NO; List systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX() - .eq(SystemConfigDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) - .eq(SystemConfigDO::getType, pageReqVO.getType()) - .eqIfPresent(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId()) - .orderByAsc(SystemConfigDO::getId)); + .eq(SystemConfigDO::getType, customPlateNoEnum.getType()) + .eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId()) + .orderByAsc(SystemConfigDO::getVersion)); if (systemConfigDOS.isEmpty()) { SystemConfigDO initCustomPlateNoConfig = new SystemConfigDO().builder().id(null).name(customPlateNoEnum.getName()).type(customPlateNoEnum.getType()).build(); return List.of(initCustomPlateNoConfig); - } else { - // configDOPageResult下的自定义板编号配置只保留version最大的一项 - Optional maxVersionCustPlateNoConfigOptinal = systemConfigDOS.stream() - .filter(s -> ObjectUtil.equal(customPlateNoEnum.getType(), s.getType())) - .max(Comparator.comparing(SystemConfigDO::getVersion)); - if (maxVersionCustPlateNoConfigOptinal.isPresent()) { - systemConfigDOS.removeIf(s -> ObjectUtil.equal(customPlateNoEnum.getType(), s.getType()) && ObjectUtil.notEqual(s.getId(), maxVersionCustPlateNoConfigOptinal.get().getId())); - } - return systemConfigDOS; } + // configDOPageResult下的自定义板编号配置只保留version最大的一项 + return systemConfigDOS.stream() + .max(Comparator.comparing(SystemConfigDO::getVersion)) + .map(Collections::singletonList) + .orElse(Collections.emptyList()); } @Override @@ -304,8 +300,11 @@ public class CustomPlateNoServiceHandler extends AbstractSystemConfigServiceHand @Override public void updateConfigStatus(ConfigUpdateStatusReqVO reqVO) { - Long id = reqVO.getId(); + // 状态 + Integer status = reqVO.getStatus(); + // 组织 + Long organId = OrganContextHolder.getOrganId(); // 校验存在 SystemConfigDO systemConfigDO = systemConfigMapper.selectOne(new LambdaQueryWrapperX() @@ -315,13 +314,31 @@ public class CustomPlateNoServiceHandler extends AbstractSystemConfigServiceHand throw exception(SYSTEM_CONFIG_NOT_EXISTS); } - // 更新状态 - systemConfigMapper.update(new LambdaUpdateWrapper().eq(SystemConfigDO::getId, id).set(SystemConfigDO::getStatus, reqVO.getStatus())); + if (CommonStatusEnum.ENABLE.getStatus().equals(status)) { + // 查询最大版本号 + List systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()) + .eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId()) + .orderByAsc(SystemConfigDO::getVersion)); + Optional maxVersionCustPlateNoConfigOptinal = systemConfigDOS.stream() + .max(Comparator.comparing(SystemConfigDO::getVersion)); + if (maxVersionCustPlateNoConfigOptinal.isPresent()) { + // 启用配置,启用最大版本号 + systemConfigMapper.update(new LambdaUpdateWrapper() + .eq(SystemConfigDO::getOrganId, organId) + .eq(SystemConfigDO::getId, maxVersionCustPlateNoConfigOptinal.get().getId()) + .eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()) + .set(SystemConfigDO::getStatus, status)); + } + } else { + // 禁用配置,禁用组织下所有板编号配置 + systemConfigMapper.update(new LambdaUpdateWrapper() + .eq(SystemConfigDO::getOrganId, organId) + .eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()) + .set(SystemConfigDO::getStatus, status)); - - if (CommonStatusEnum.DISABLE.getStatus().equals(reqVO.getStatus())) { // 禁用配置移除缓存 - String redisKey = String.format("%s:%d:%s", RedisKeyConstants.SYSTEM_CONFIG, OrganContextHolder.getOrganId(), RedisKeyConstants.CUSTOM_PLATE_NO); + String redisKey = String.format("%s:%d:%s", RedisKeyConstants.SYSTEM_CONFIG, organId, RedisKeyConstants.CUSTOM_PLATE_NO); Boolean delete = stringRedisTemplate.delete(redisKey); log.info("[CustomPlateNoGenerateService][afterUpdateStatus]key:{}缓存删除结果:{}", redisKey, delete); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java index 1684ebe9e..1abd0aede 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java @@ -38,7 +38,7 @@ public class DefaultSystemConfigServiceHandler extends AbstractSystemConfigServi // 自定义板编号、高级筛选不走通用分页查询 List list = allConfigTypes.stream() - .filter(f -> ObjectUtil.notEqual(SystemConfigTypeEnum.ADVANCED_SCREEN.getType(), f.getType()) && ObjectUtil.notEqual(SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType(), f.getType())).toList(); + .filter(f -> ObjectUtil.notEqual(SystemConfigTypeEnum.ADVANCED_SCREEN.getType(), f.getType())).toList(); List systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX() .likeIfPresent(SystemConfigDO::getName, reqVO.getName()) @@ -65,6 +65,14 @@ public class DefaultSystemConfigServiceHandler extends AbstractSystemConfigServi .type(configTypeEnum.getType()) .build(); + // 自定义板编号 + if(configTypeEnum.getType().equals(SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType())){ + initConfig.setStatus(CommonStatusEnum.DISABLE.getStatus()); + resultList.add(initConfig); + continue; + } + + // 支持多种颜色排单 if(configTypeEnum.getType().equals(SystemConfigTypeEnum.MULTI_COLOR_ORDER_PLAN.getType())){ SystemConfigDO systemConfigDO = SystemConfigDO .builder() @@ -90,9 +98,6 @@ public class DefaultSystemConfigServiceHandler extends AbstractSystemConfigServi } } - // 增加自定义板编号配置 - List customPlateNoConfigList = customPlateNoServiceHandler.selectList(ConfigPageReqVO.builder().type(SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()).build()); - resultList.addAll(0, customPlateNoConfigList); return resultList; }