禅道#1054问题修复

This commit is contained in:
gaoqr
2025-02-11 15:42:23 +08:00
parent 8d0a418949
commit 6cbb5f9fed
2 changed files with 45 additions and 23 deletions
@@ -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<SystemConfigDO> selectList(ConfigPageReqVO pageReqVO) {
SystemConfigTypeEnum customPlateNoEnum = SystemConfigTypeEnum.CUSTOM_PLATE_NO;
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX<SystemConfigDO>()
.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<SystemConfigDO> 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<SystemConfigDO>()
@@ -315,13 +314,31 @@ public class CustomPlateNoServiceHandler extends AbstractSystemConfigServiceHand
throw exception(SYSTEM_CONFIG_NOT_EXISTS);
}
// 更新状态
systemConfigMapper.update(new LambdaUpdateWrapper<SystemConfigDO>().eq(SystemConfigDO::getId, id).set(SystemConfigDO::getStatus, reqVO.getStatus()));
if (CommonStatusEnum.ENABLE.getStatus().equals(status)) {
// 查询最大版本号
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX<SystemConfigDO>()
.eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType())
.eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId())
.orderByAsc(SystemConfigDO::getVersion));
Optional<SystemConfigDO> maxVersionCustPlateNoConfigOptinal = systemConfigDOS.stream()
.max(Comparator.comparing(SystemConfigDO::getVersion));
if (maxVersionCustPlateNoConfigOptinal.isPresent()) {
// 启用配置,启用最大版本号
systemConfigMapper.update(new LambdaUpdateWrapper<SystemConfigDO>()
.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<SystemConfigDO>()
.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);
}
@@ -38,7 +38,7 @@ public class DefaultSystemConfigServiceHandler extends AbstractSystemConfigServi
// 自定义板编号、高级筛选不走通用分页查询
List<SystemConfigTypeEnum> 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<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX<SystemConfigDO>()
.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<SystemConfigDO> customPlateNoConfigList = customPlateNoServiceHandler.selectList(ConfigPageReqVO.builder().type(SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()).build());
resultList.addAll(0, customPlateNoConfigList);
return resultList;
}