1、systemconfig部分属性、字段、接口名修正;2、自定义板编号配置支持基于机构缓存,保存新增自定义板编号序号配置;3、自定义板编号规则保存校验完善;

This commit is contained in:
gaoqr
2024-11-12 13:55:23 +08:00
parent c552b8b47e
commit aae4149730
12 changed files with 281 additions and 92 deletions
@@ -35,39 +35,39 @@ import static com.cf.imes.framework.common.pojo.CommonResult.success;
@RestController @RestController
@RequestMapping("/system/config") @RequestMapping("/system/config")
@Validated @Validated
public class ConfigController { public class SystemConfigController {
@Resource @Resource
private SystemConfigService baseConfigService; private SystemConfigService systemConfigService;
@GetMapping() @GetMapping()
@Operation(summary = "获得系统配置的分页列表") @Operation(summary = "获得系统配置的分页列表")
@PreAuthorize("@ss.hasPermission('baseconfig:query')") @PreAuthorize("@ss.hasPermission('system:base-setting:query')")
public CommonResult<PageResult<ConfigRespVO>> getBaseConfigPage(@Valid ConfigPageReqVO pageReqVO) { public CommonResult<PageResult<ConfigRespVO>> getSystemConfigPage(@Valid ConfigPageReqVO pageReqVO) {
PageResult<SystemConfigDO> pageResult = baseConfigService.getBaseConfigPage(pageReqVO); PageResult<SystemConfigDO> pageResult = systemConfigService.getSystemConfigPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ConfigRespVO.class)); return success(BeanUtils.toBean(pageResult, ConfigRespVO.class));
} }
@GetMapping("/{id}") @GetMapping("/{id}")
@Operation(summary = "根据id查询系统配置") @Operation(summary = "根据id查询系统配置")
@PreAuthorize("@ss.hasPermission('baseconfig:query')") @PreAuthorize("@ss.hasPermission('system:base-setting:query')")
public CommonResult<ConfigRespVO> getBaseConfig(@PathVariable Long id) { public CommonResult<ConfigRespVO> getSystemConfig(@PathVariable("id") Long id) {
SystemConfigDO baseConfig = baseConfigService.getBaseConfig(id); SystemConfigDO systemConfigDO = systemConfigService.getSystemConfig(id);
return success(BeanUtils.toBean(baseConfig, ConfigRespVO.class)); return success(BeanUtils.toBean(systemConfigDO, ConfigRespVO.class));
} }
@PostMapping("/status") @PostMapping("/status")
@Operation(summary = "修改系统配置状态") @Operation(summary = "修改系统配置状态")
@PreAuthorize("@ss.hasPermission('baseconfig:update')") @PreAuthorize("@ss.hasPermission('system:base-setting:setting')")
public CommonResult<Boolean> updateConfigStatus(@Valid @RequestBody ConfigUpdateStatusReqVO reqVO){ public CommonResult<Boolean> updateConfigStatus(@Valid @RequestBody ConfigUpdateStatusReqVO reqVO){
baseConfigService.updateStatus(reqVO); systemConfigService.updateStatus(reqVO);
return success(true); return success(true);
} }
@PostMapping() @PostMapping()
@Operation(summary = "修改系统配置") @Operation(summary = "修改系统配置")
@PreAuthorize("@ss.hasPermission('baseconfig:update')") @PreAuthorize("@ss.hasPermission('system:base-setting:setting')")
public CommonResult<Boolean> modifyBaseConfig(@Valid @RequestBody ConfigSaveReqVO reqVO) { public CommonResult<Boolean> modifySystemConfig(@Valid @RequestBody ConfigSaveReqVO reqVO) {
baseConfigService.modifyBaseConfig(reqVO); systemConfigService.modifySystemConfig(reqVO);
return success(true); return success(true);
} }
} }
@@ -1,4 +1,4 @@
package com.cf.imes.module.system.dal.dataobject.customblockno; package com.cf.imes.module.system.dal.dataobject.customplateno;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
@@ -11,7 +11,6 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString; import lombok.ToString;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
@@ -20,14 +19,14 @@ import java.io.Serializable;
* @author Gqr * @author Gqr
* @since 2024/11/11 18:31 * @since 2024/11/11 18:31
*/ */
@TableName(value = "custom_blockno_seq", autoResultMap = true) @TableName(value = "custom_plateno_seq", autoResultMap = true)
@KeySequence("custom_blockno_seq_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写 @KeySequence("custom_plateno_seq_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class CustomBlockNoSeqDO implements Serializable { public class CustomPlateNoSeqDO implements Serializable {
private static final long serialVersionUID = -4362641672146584682L; private static final long serialVersionUID = -4362641672146584682L;
@@ -51,13 +50,27 @@ public class CustomBlockNoSeqDO implements Serializable {
/** /**
* 上次生产单号 * 上次生产单号
*/ */
@TableField(value = "last_orderNo")
private Long lastOrderNo; private Long lastOrderNo;
/** /**
* 生产单序号前值 * 生产单序号前值
*/ */
@TableField(value = "orderNo_seq")
private Integer orderNoSeq; private Integer orderNoSeq;
/**
* 上次板件号
*/
@TableField(value = "last_plateNo")
private String lastPlateNo;
/**
* 板件序号前值
*/
@TableField(value = "plateNo_seq")
private Integer plateNoSeq;
/** /**
* 上次房间 * 上次房间
*/ */
@@ -71,22 +84,24 @@ public class CustomBlockNoSeqDO implements Serializable {
/** /**
* 上次柜体 * 上次柜体
*/ */
private String lastCabinet; private String lastBody;
/** /**
* 柜体序号前值 * 柜体序号前值
*/ */
private Integer cabinetSeq; private Integer bodySeq;
/** /**
* 上次加工组 * 上次加工组
*/ */
private String lastProcessingGroup; @TableField(value = "last_process_group")
private String lastProcessGroup;
/** /**
* 加工组序号前值 * 加工组序号前值
*/ */
private Integer processingGroupSeq; @TableField(value = "process_group_seq")
private Integer processGroupSeq;
/** /**
* 上次年 * 上次年
@@ -0,0 +1,55 @@
package com.cf.imes.module.system.dal.dataobject.systemconfig;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
/**
* 系统配置copydo 用于缓存
*
* @author Gqr
* @since 2024/11/7 16:12
*/
@Data
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class SystemConfigCopyDO implements Serializable {
private static final long serialVersionUID = 1788458794035807655L;
/**
* 主键
*/
private Long id;
/**
* 配置项名称
*/
private String name;
/**
* 状态
*/
private int status;
/**
* 配置类型
*/
private int type;
/**
* 配置规则
*/
private List<SystemConfigCustomPlateNoRuleItemCopyDO> ruleList;
/**
* 组织id
*/
private Long organId;
}
@@ -0,0 +1,57 @@
package com.cf.imes.module.system.dal.dataobject.systemconfig;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
/**
* 系统配置copydo 用于缓存
*
* @author Gqr
* @since 2024/11/12 11:21
*/
@Data
@ToString(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
public class SystemConfigCustomPlateNoRuleItemCopyDO implements Serializable {
private static final long serialVersionUID = -5691595836226548840L;
/**
* 规则编码
*/
private String ruleCode;
/**
* 规则值
*/
private String value;
/**
* 初始值
*/
private Integer initValue;
/**
* 位数
*/
private Integer length;
/**
* 是否左补零
*/
private boolean leftFillZero;
/**
* 步长
*/
private Integer incrementStep;
/**
* 复位/清零模式
*/
private Integer resetMode;
}
@@ -1,15 +0,0 @@
package com.cf.imes.module.system.dal.mysql.customblockno;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.system.dal.dataobject.customblockno.CustomBlockNoSeqDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 自定义板编号序号 mapper
*
* @author Gqr
* @since 2024/11/11 18:38
*/
@Mapper
public interface CustomBlockNoSeqMapper extends BaseMapperX<CustomBlockNoSeqDO> {
}
@@ -0,0 +1,28 @@
package com.cf.imes.module.system.dal.mysql.customplateno;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.dal.dataobject.customplateno.CustomPlateNoSeqDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 自定义板编号序号 mapper
*
* @author Gqr
* @since 2024/11/11 18:38
*/
@Mapper
public interface CustomPlateNoSeqMapper extends BaseMapperX<CustomPlateNoSeqDO> {
/**
* 查询系统配置编号下的自定义板编号序号
* @param configId
* @return
*/
default CustomPlateNoSeqDO getPlateNoSeqByConfigId(Long configId) {
return selectOne(new LambdaQueryWrapperX<CustomPlateNoSeqDO>()
.eq(CustomPlateNoSeqDO::getConfigId, configId)
.eq(CustomPlateNoSeqDO::getOrganId, OrganContextHolder.getOrganId()));
}
}
@@ -114,4 +114,14 @@ public class RedisKeyConstants {
* !!!!注意同步修改OrganRedisCacheManager中的key字符串 * !!!!注意同步修改OrganRedisCacheManager中的key字符串
*/ */
public static final String TENANT_PACKAGE_MENU_IDS = "tenant_package_menu_ids#12h"; public static final String TENANT_PACKAGE_MENU_IDS = "tenant_package_menu_ids#12h";
/**
* 系统配置
*/
public static final String SYSTEM_CONFIG = "system_config";
/**
* 自定义板编号
*/
public static final String CUSTOM_PLATE_NO = "custom_plateno";
} }
@@ -16,7 +16,7 @@ public enum SystemConfigTypeEnum {
/** /**
* 自定义板编号 * 自定义板编号
*/ */
CUSTOM_BOARD_NO(1, "自定义板编号"), CUSTOM_PLATE_NO(1, "自定义板编号"),
/** /**
* 智能分线 * 智能分线
@@ -4,6 +4,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigCopyDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
/** /**
@@ -19,7 +20,7 @@ public interface SystemConfigService {
* @param reqVO * @param reqVO
* @return * @return
*/ */
PageResult<SystemConfigDO> getBaseConfigPage(ConfigPageReqVO reqVO); PageResult<SystemConfigDO> getSystemConfigPage(ConfigPageReqVO reqVO);
/** /**
* 根据id查询基础配置 * 根据id查询基础配置
@@ -27,14 +28,14 @@ public interface SystemConfigService {
* @param id * @param id
* @return * @return
*/ */
SystemConfigDO getBaseConfig(Long id); SystemConfigDO getSystemConfig(Long id);
/** /**
* 新增/修改基础配置 * 新增/修改基础配置
* *
* @param reqVO * @param reqVO
*/ */
void modifyBaseConfig(ConfigSaveReqVO reqVO); void modifySystemConfig(ConfigSaveReqVO reqVO);
/** /**
* 更新基础配置状态 * 更新基础配置状态
@@ -42,4 +43,10 @@ public interface SystemConfigService {
* @param reqVO * @param reqVO
*/ */
void updateStatus(ConfigUpdateStatusReqVO reqVO); void updateStatus(ConfigUpdateStatusReqVO reqVO);
/**
* 查询组织下自定义板编号配置(缓存)
* @return
*/
SystemConfigCopyDO getOrgCustomPlateNoConfig();
} }
@@ -1,7 +1,9 @@
package com.cf.imes.module.system.service.config; package com.cf.imes.module.system.service.config;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -9,13 +11,17 @@ import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigCopyDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigCustomPlateNoRuleItemCopyDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper; import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import com.cf.imes.module.system.dal.redis.RedisKeyConstants;
import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum;
import com.cf.imes.module.system.service.config.factory.SystemConfigServiceFactory; import com.cf.imes.module.system.service.config.factory.SystemConfigServiceFactory;
import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService; import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -38,20 +44,20 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.SYSTEM_CONFIG_N
public class SystemConfigServiceImpl implements SystemConfigService { public class SystemConfigServiceImpl implements SystemConfigService {
@Resource @Resource
private SystemConfigMapper baseConfigMapper; private SystemConfigMapper systemConfigMapper;
@Resource @Resource
private SystemConfigServiceFactory configServiceFactory; private SystemConfigServiceFactory configServiceFactory;
@Override @Override
public PageResult<SystemConfigDO> getBaseConfigPage(ConfigPageReqVO reqVO) { public PageResult<SystemConfigDO> getSystemConfigPage(ConfigPageReqVO reqVO) {
PageResult<SystemConfigDO> configDOPageResult = baseConfigMapper.selectPage(reqVO); PageResult<SystemConfigDO> configDOPageResult = systemConfigMapper.selectPage(reqVO);
// todo 后续所有configTypeEnum中的类型需要上到列表补全时通过遍历enum来补充 // todo 后续所有configTypeEnum中的类型需要上到列表补全时通过遍历enum来补充
SystemConfigTypeEnum customBoardNoEnum = SystemConfigTypeEnum.CUSTOM_BOARD_NO; SystemConfigTypeEnum customplateNoEnum = SystemConfigTypeEnum.CUSTOM_PLATE_NO;
CopyOnWriteArrayList<SystemConfigDO> configDOS = Lists.newCopyOnWriteArrayList(configDOPageResult.getList()); CopyOnWriteArrayList<SystemConfigDO> configDOS = Lists.newCopyOnWriteArrayList(configDOPageResult.getList());
Optional<SystemConfigDO> configDOOptional = configDOS.stream().filter(c -> ObjectUtil.equal(customBoardNoEnum.getType(), c.getType())).findAny(); Optional<SystemConfigDO> configDOOptional = configDOS.stream().filter(c -> ObjectUtil.equal(customplateNoEnum.getType(), c.getType())).findAny();
if (configDOOptional.isEmpty()) { if (configDOOptional.isEmpty()) {
configDOS.add(new SystemConfigDO().builder().id(null).name(customBoardNoEnum.getName()).type(customBoardNoEnum.getType()).build()); configDOS.add(new SystemConfigDO().builder().id(null).name(customplateNoEnum.getName()).type(customplateNoEnum.getType()).build());
configDOPageResult.setList(configDOS); configDOPageResult.setList(configDOS);
configDOPageResult.setTotal(configDOPageResult.getTotal() + 1); configDOPageResult.setTotal(configDOPageResult.getTotal() + 1);
} }
@@ -59,13 +65,13 @@ public class SystemConfigServiceImpl implements SystemConfigService {
} }
@Override @Override
public SystemConfigDO getBaseConfig(Long id) { public SystemConfigDO getSystemConfig(Long id) {
return validateBaseConfigExists(id); return validateSystemConfigExists(id);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyBaseConfig(ConfigSaveReqVO reqVO) { public void modifySystemConfig(ConfigSaveReqVO reqVO) {
Long id = reqVO.getId(); Long id = reqVO.getId();
// 根据配置类型选择对应的service // 根据配置类型选择对应的service
AbstractSystemConfigGenerateService configService = configServiceFactory.getConfigService(reqVO.getType()); AbstractSystemConfigGenerateService configService = configServiceFactory.getConfigService(reqVO.getType());
@@ -73,45 +79,57 @@ public class SystemConfigServiceImpl implements SystemConfigService {
configService.checkValid(reqVO.getSetting()); configService.checkValid(reqVO.getSetting());
// 系统配置保存前操作 // 系统配置保存前操作
configService.beforeSaveConfig(reqVO); configService.beforeSaveConfig(reqVO);
SystemConfigDO baseConfigDO; SystemConfigDO systemConfigDO;
if (ObjectUtil.isNotNull(id)) { if (ObjectUtil.isNotNull(id)) {
baseConfigDO = validateBaseConfigExists(id); systemConfigDO = validateSystemConfigExists(id);
// 覆盖配置 // 覆盖配置
baseConfigDO.setSetting(reqVO.getSetting()); systemConfigDO.setSetting(reqVO.getSetting());
// 更新 // 更新
baseConfigMapper.updateById(baseConfigDO); systemConfigMapper.updateById(systemConfigDO);
} else { } else {
baseConfigDO = BeanUtils.toBean(reqVO, SystemConfigDO.class); systemConfigDO = BeanUtils.toBean(reqVO, SystemConfigDO.class);
// 新增 // 新增
baseConfigMapper.insert(baseConfigDO); systemConfigMapper.insert(systemConfigDO);
} }
// 系统配置保存后操作 // 系统配置保存后操作
configService.afterSaveConfig(baseConfigDO, reqVO); configService.afterSaveConfig(systemConfigDO, reqVO);
} }
@Override @Override
public void updateStatus(ConfigUpdateStatusReqVO reqVO) { public void updateStatus(ConfigUpdateStatusReqVO reqVO) {
Long id = reqVO.getId(); Long id = reqVO.getId();
// 校验存在 // 校验存在
validateBaseConfigExists(id); validateSystemConfigExists(id);
// 更新状态 // 更新状态
baseConfigMapper.update(new LambdaUpdateWrapper<SystemConfigDO>().eq(SystemConfigDO::getId, id).set(SystemConfigDO::getStatus, reqVO.getStatus())); systemConfigMapper.update(new LambdaUpdateWrapper<SystemConfigDO>().eq(SystemConfigDO::getId, id).set(SystemConfigDO::getStatus, reqVO.getStatus()));
} }
@Override
@Cacheable(cacheNames = RedisKeyConstants.SYSTEM_CONFIG, key = "'" + RedisKeyConstants.CUSTOM_PLATE_NO + "'")
public SystemConfigCopyDO getOrgCustomPlateNoConfig() {
SystemConfigDO systemConfigDO = systemConfigMapper.selectOne(new LambdaUpdateWrapper<SystemConfigDO>()
.eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId())
.eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType())
.eq(SystemConfigDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
SystemConfigCopyDO copyDO = JSON.parseObject(JSON.toJSONString(systemConfigDO), SystemConfigCopyDO.class);
copyDO.setRuleList(JSON.parseArray(systemConfigDO.getSetting(), SystemConfigCustomPlateNoRuleItemCopyDO.class));
return copyDO;
}
/** /**
* 校验基础配置是否存在 * 校验基础配置是否存在
* *
* @param id * @param id
* @return * @return
*/ */
private SystemConfigDO validateBaseConfigExists(Long id) { private SystemConfigDO validateSystemConfigExists(Long id) {
SystemConfigDO baseConfigDO = baseConfigMapper.selectOne(new LambdaQueryWrapperX<SystemConfigDO>() SystemConfigDO systemConfigDO = systemConfigMapper.selectOne(new LambdaQueryWrapperX<SystemConfigDO>()
.eq(SystemConfigDO::getId, id) .eq(SystemConfigDO::getId, id)
.eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId())); .eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId()));
if (ObjectUtil.isNull(baseConfigDO)) { if (ObjectUtil.isNull(systemConfigDO)) {
throw exception(SYSTEM_CONFIG_NOT_EXISTS); throw exception(SYSTEM_CONFIG_NOT_EXISTS);
} }
return baseConfigDO; return systemConfigDO;
} }
} }
@@ -3,7 +3,7 @@ package com.cf.imes.module.system.service.config.factory;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum;
import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService; import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService;
import com.cf.imes.module.system.service.config.factory.service.impl.CustomBoardNoGenerateService; import com.cf.imes.module.system.service.config.factory.service.impl.CustomPlateNoGenerateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -34,8 +34,8 @@ public class SystemConfigServiceFactory {
*/ */
public AbstractSystemConfigGenerateService getConfigService(int type) { public AbstractSystemConfigGenerateService getConfigService(int type) {
switch (SystemConfigTypeEnum.fromType(type)) { switch (SystemConfigTypeEnum.fromType(type)) {
case CUSTOM_BOARD_NO: case CUSTOM_PLATE_NO:
return applicationContext.getBean(CustomBoardNoGenerateService.class); return applicationContext.getBean(CustomPlateNoGenerateService.class);
case INTELLIGENT_BRANCH: case INTELLIGENT_BRANCH:
// todo 智能分线 // todo 智能分线
case ADVANCED_SCREEN: case ADVANCED_SCREEN:
@@ -10,9 +10,10 @@ import com.cf.imes.framework.common.exception.ErrorCode;
import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.customplateno.CustomPlateNoSeqDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.dataobject.dict.DictDataDO; import com.cf.imes.module.system.dal.dataobject.dict.DictDataDO;
import com.cf.imes.module.system.dal.mysql.customblockno.CustomBlockNoSeqMapper; import com.cf.imes.module.system.dal.mysql.customplateno.CustomPlateNoSeqMapper;
import com.cf.imes.module.system.enums.config.CustBoardRuleCodeEnum; import com.cf.imes.module.system.enums.config.CustBoardRuleCodeEnum;
import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService; import com.cf.imes.module.system.service.config.factory.service.AbstractSystemConfigGenerateService;
import com.cf.imes.module.system.service.dict.DictDataService; import com.cf.imes.module.system.service.dict.DictDataService;
@@ -21,7 +22,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.SYSTEM_CONFIG_CUSTOM_BOARD_NO_RULE_SAVE_CHECK_ERROR; import static com.cf.imes.module.system.enums.ErrorCodeConstants.SYSTEM_CONFIG_CUSTOM_BOARD_NO_RULE_SAVE_CHECK_ERROR;
@@ -32,16 +35,16 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.SYSTEM_CONFIG_C
* @author Gqr * @author Gqr
* @since 2024/11/8 16:48 * @since 2024/11/8 16:48
*/ */
@Service("customBoardNoGenerateService") @Service("customPlateNoGenerateService")
@Slf4j @Slf4j
public class CustomBoardNoGenerateService extends AbstractSystemConfigGenerateService { public class CustomPlateNoGenerateService extends AbstractSystemConfigGenerateService {
// 自定义板编号校验错误全部统一编号1_002_040_003 // 自定义板编号校验错误全部统一编号1_002_040_003
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RULECODE_EMPTY_ERROR = new ErrorCode(1_002_040_003, "规则编码不能为空"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RULECODE_EMPTY_ERROR = new ErrorCode(1_002_040_003, "规则编码不能为空");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RULECODE_NOT_MATCH_ERROR = new ErrorCode(1_002_040_003, "规则编码【{}】不合法,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RULECODE_NOT_MATCH_ERROR = new ErrorCode(1_002_040_003, "规则编码【{}】不合法,请检查配置规则");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_DATE_TYPE_FORMAT_ERROR = new ErrorCode(1_002_040_003, "时间格式【{}】不合法,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_DATE_TYPE_FORMAT_ERROR = new ErrorCode(1_002_040_003, "时间格式【{}】不合法,请检查配置规则");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RESETMODE_ERROR = new ErrorCode(1_002_040_003, "复位/清零模式【{}】不合法,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_RESETMODE_ERROR = new ErrorCode(1_002_040_003, "复位/清零模式【{}】不合法,请检查配置规则");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY = new ErrorCode(1_002_040_003, "字类型【{}】不能为空,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY = new ErrorCode(1_002_040_003, "数【{}】不能为空,请检查配置规则");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_ERROR = new ErrorCode(1_002_040_003, "数值类型参数{}:【{}】转换异常,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_ERROR = new ErrorCode(1_002_040_003, "数值类型参数{}:【{}】转换异常,请检查配置规则");
public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_BOL_TYPE_ERROR = new ErrorCode(1_002_040_003, "布尔类型参数{}:【{}】转换异常,请检查配置规则"); public static final ErrorCode CUSTOM_BOARD_NO_RULE_CHECK_BOL_TYPE_ERROR = new ErrorCode(1_002_040_003, "布尔类型参数{}:【{}】转换异常,请检查配置规则");
@@ -50,7 +53,7 @@ public class CustomBoardNoGenerateService extends AbstractSystemConfigGenerateSe
private DictDataService dictDataService; private DictDataService dictDataService;
@Resource @Resource
private CustomBlockNoSeqMapper customBlockNoSeqMapper; private CustomPlateNoSeqMapper customPlateNoSeqMapper;
@Override @Override
public void checkValid(String setting) { public void checkValid(String setting) {
@@ -79,11 +82,10 @@ public class CustomBoardNoGenerateService extends AbstractSystemConfigGenerateSe
} catch (ServiceException e) { } catch (ServiceException e) {
throw e; throw e;
} catch (Exception e) { } catch (Exception e) {
ErrorCode systemConfigCustomBoardNoRuleSaveCheckError = SYSTEM_CONFIG_CUSTOM_BOARD_NO_RULE_SAVE_CHECK_ERROR; ErrorCode systemConfigCustomPlateNoRuleSaveCheckError = SYSTEM_CONFIG_CUSTOM_BOARD_NO_RULE_SAVE_CHECK_ERROR;
log.error(systemConfigCustomBoardNoRuleSaveCheckError.getMsg(), e); log.error(systemConfigCustomPlateNoRuleSaveCheckError.getMsg(), e);
throw new ServiceException(systemConfigCustomBoardNoRuleSaveCheckError); throw new ServiceException(systemConfigCustomPlateNoRuleSaveCheckError);
} }
throw new ServiceException();
} }
/** /**
@@ -130,41 +132,47 @@ public class CustomBoardNoGenerateService extends AbstractSystemConfigGenerateSe
|| ObjectUtil.equal(CustBoardRuleCodeEnum.ROOMNO, custBoardRuleCodeEnum) || ObjectUtil.equal(CustBoardRuleCodeEnum.ROOMNO, custBoardRuleCodeEnum)
|| ObjectUtil.equal(CustBoardRuleCodeEnum.BODYNO, custBoardRuleCodeEnum) || ObjectUtil.equal(CustBoardRuleCodeEnum.BODYNO, custBoardRuleCodeEnum)
|| ObjectUtil.equal(CustBoardRuleCodeEnum.PROCESSGROUP, custBoardRuleCodeEnum)) { || ObjectUtil.equal(CustBoardRuleCodeEnum.PROCESSGROUP, custBoardRuleCodeEnum)) {
String[] intTypeFieldArr = new String[]{"initValue", "length", "resetMode", "increment_step"}; Map<String, String> intTypeFieldMap = new HashMap<>() {{
String[] bolTypeFieldArr = new String[]{"left_fill_zero"}; put("initValue", "起始值");
for (String field : intTypeFieldArr) { put("length", "位数");
checkInt(field, object.get(field)); put("resetMode", "复位/清零模式");
} put("increment_step", "递增值");
for (String field : bolTypeFieldArr) { }};
checkBol(field, object.get(field)); Map<String, String> bolTypeFieldMap = new HashMap<>() {{
} put("left_fill_zero", "是否左补零");
}};
intTypeFieldMap.forEach((k, v) -> checkInt(object.get(k), v));
bolTypeFieldMap.forEach((k, v) -> checkBol(object.get(k), v));
} }
} }
/** /**
* 校验整型 * 校验整型
*
* @param intObj
* @param fieldName
*/ */
private void checkInt(String field, Object intObj) { private void checkInt(Object intObj, String fieldName) {
if (ObjectUtil.isNull(intObj)) { if (ObjectUtil.isNull(intObj)) {
throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY, field); throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY, fieldName);
} }
if (!NumberUtil.isInteger(intObj.toString())) { if (!NumberUtil.isInteger(intObj.toString())) {
throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_ERROR, field, intObj); throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_ERROR, fieldName, intObj);
} }
} }
/** /**
* 校验布尔型 * 校验布尔型
* *
* @param field
* @param bolObj * @param bolObj
* @param fieldName
*/ */
private void checkBol(String field, Object bolObj) { private void checkBol(Object bolObj, String fieldName) {
if (ObjectUtil.isNull(bolObj)) { if (ObjectUtil.isNull(bolObj)) {
throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY, field); throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_INT_TYPE_NO_EMPTY, fieldName);
} }
if (!(bolObj instanceof Boolean)) { if (!(bolObj instanceof Boolean)) {
throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_BOL_TYPE_ERROR, field, bolObj); throw ServiceExceptionUtil.exception(CUSTOM_BOARD_NO_RULE_CHECK_BOL_TYPE_ERROR, fieldName, bolObj);
} }
} }
@@ -194,6 +202,12 @@ public class CustomBoardNoGenerateService extends AbstractSystemConfigGenerateSe
@Override @Override
public void afterSaveConfig(SystemConfigDO systemConfigDO, ConfigSaveReqVO reqVO) { public void afterSaveConfig(SystemConfigDO systemConfigDO, ConfigSaveReqVO reqVO) {
Long configId = systemConfigDO.getId();
// 查询机构下组织id的自增序号
CustomPlateNoSeqDO plateNoSeqByConfigId = customPlateNoSeqMapper.getPlateNoSeqByConfigId(configId);
// 提前生成板编号序号存在则不处理
if (ObjectUtil.isNull(plateNoSeqByConfigId)) {
customPlateNoSeqMapper.insert(CustomPlateNoSeqDO.builder().configId(configId).build());
}
} }
} }