ludc
2023-04-12 d7a83f1396425c4e47da9b95f287b26cd5bb3344
后端代码整合
已修改53个文件
已重命名2个文件
已添加21个文件
20306 ■■■■ 文件已修改
Source/UBCS-WEB/package-lock.json 16381 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-dev.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCodeAllcodeDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/BaseModel.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSerialValue.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/revision/service/RevisionModelUtil.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/enumpck/BaseEnum.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/enumpck/OsCodeFillTypeEnum.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/BaseQueryObject.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/KeyValue.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/PageHelper.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UIFieldSortVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UIFormReferVO.java 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITableCustomDefineVO.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITableFieldVO.java 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITablePageVO.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/service/VciSecretServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/BeanUtilForVCI.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/VciBaseUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/VciDateUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/WebUtil.java 712 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllcodeController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java 115 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeBasicSecMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSerialValueMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeAllcodeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeAllCodeAllCodeServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSerialValueMapper.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-admin.log 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package-lock.json
ÎļþÌ«´ó
Source/UBCS-WEB/vue.config.js
@@ -26,7 +26,7 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://192.168.3.7:37000',
        target: 'http://localhost:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //远程演示服务地址,可用于直接启动项目
        //target: 'https://saber.bladex.vip/api',
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/CommonConstant.java
@@ -54,6 +54,16 @@
    Integer IS_DEFAULT = 1;
    /**
     * æ˜¯é»˜è®¤å¯†ç ç­–略值
     */
    Long STRATEGY_UPDATE_STATUS = 0L;
    /**
     * æ˜¯é»˜è®¤å¯†ç ç­–略值
     */
    Long NOT_STRATEGY_UPDATE_STATUS = 0L;
    /**
     * ä¸æ˜¯é»˜è®¤å¯†ç ç­–略值
     */
    Integer NOT_DEFAULT = 0;
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "192.168.93.140:38848";
    String NACOS_DEV_ADDR = "192.168.93.154:38848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-ops/ubcs-swagger/src/main/resources/application-dev.yml
@@ -2,11 +2,11 @@
  cloud:
    routes:
      - name: æŽˆæƒæ¨¡å—
        uri: 127.0.0.1
        uri: 127.0.0.1:37000
        location: /blade-auth/v2/api-docs
      - name: å·¥ä½œå°æ¨¡å—
        uri: 127.0.0.1
        uri: 127.0.0.1:37000
        location: /blade-desk/v2/api-docs
      - name: ç³»ç»Ÿæ¨¡å—
        uri: 127.0.0.1
        uri: 127.0.0.1:37000
        location: /blade-system/v2/api-docs
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCodeAllcodeDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.entity.CodeAllCode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * å…¨éƒ¨ç å€¼ æ•°æ®ä¼ è¾“对象实体类
 *
 * @author ludc
 * @since 2023-04-03
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeCodeAllcodeDTO extends CodeAllCode {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeRuleDTO.java
@@ -1,17 +1,36 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.entity.CodeRule;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * ä¸»æ•°æ®ç¼–码规则数据传输对象
 * ç¼–码规则 æ•°æ®ä¼ è¾“对象实体类
 *
 * @author weidy
 * @date 2022-01-24
 * @author ludc
 * @since 2023-04-03
 */
public class CodeRuleDTO extends BaseModelVO {
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeRuleDTO extends CodeRule {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
@@ -37,4 +56,5 @@
                "elements=" + elements +
                '}'+ super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
@@ -1,34 +1,104 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.dto;
import com.vci.ubcs.code.entity.CodeSynonymEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
/**
 * è¿‘义词维护 æ•°æ®ä¼ è¾“对象实体类
 * åŒä¹‰è¯é…ç½®æ•°æ®ä¼ è¾“对象
 *
 * @author yuxc
 * @since 2023-04-04
 * @author weidy
 * @date 2022-02-17
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodeSynonymDTO extends CodeSynonymEntity {
    private static final long serialVersionUID = 1L;
public class CodeSynonymDTO extends BaseModelVO {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 4615707117393017144L;
    /**
     * æ‰€å±žç¼–码规则
     */
    private String codeclassifytemplateoid;
    /**
     * æ‰€å±žç¼–码规则显示文本
     */
    private String codeclassifytemplateoidName;
    /**
     * æºå€¼
     */
    private String sourcevalue;
    /**
     * åŒä¹‰è¯
     */
    private String synonymvalue;
    /**
     * èŽ·å– æ‰€å±žç¼–码规则
     */
    public String getCodeclassifytemplateoid (){
        return codeclassifytemplateoid;
    }
    /**
     * è®¾ç½® æ‰€å±žç¼–码规则
     */
    public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
        this.codeclassifytemplateoid = codeclassifytemplateoid;
    }
    /**
     * èŽ·å–æ‰€å±žç¼–ç è§„åˆ™æ˜¾ç¤ºæ–‡æœ¬
     */
    public String getCodeclassifytemplateoidName (){
        return codeclassifytemplateoidName;
    }
    /**
     * è®¾ç½®æ‰€å±žç¼–码规则显示文本
     */
    public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
        this.codeclassifytemplateoidName = codeclassifytemplateoidName;
    }
    /**
     * èŽ·å– æºå€¼
     */
    public String getSourcevalue (){
        return sourcevalue;
    }
    /**
     * è®¾ç½® æºå€¼
     */
    public void setSourcevalue (String sourcevalue){
        this.sourcevalue = sourcevalue;
    }
    /**
     * èŽ·å– åŒä¹‰è¯
     */
    public String getSynonymvalue (){
        return synonymvalue;
    }
    /**
     * è®¾ç½® åŒä¹‰è¯
     */
    public void setSynonymvalue (String synonymvalue){
        this.synonymvalue = synonymvalue;
    }
    @Override
    public String toString() {
        return "CodeSynonymDTO{" +
        "codeclassifytemplateoid='" + codeclassifytemplateoid +"',"+
        "codeclassifytemplateoidName='" + codeclassifytemplateoidName +"'," +
        "sourcevalue='" + sourcevalue +"',"+
        "synonymvalue='" + synonymvalue +"',"+
        "}" + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/BaseModel.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -18,7 +19,7 @@
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    @TableId(value = "OID")
    @TableId(value = "OID",type = IdType.ASSIGN_UUID)
    private String oid;
    private String id;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java
@@ -18,9 +18,9 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.com.vci.starter.annotation.Transient;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java
@@ -21,14 +21,12 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
 * å…³é”®å±žæ€§æŸ¥é‡è§„则 å®žä½“ç±»
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSerialValue.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ç¼–码规则的流水值
 * @author ludc
 * @date 2022-3-1
 */
@Data
@TableName("PL_CODE_CODESERIALVALUE")
@ApiModel(value = "CodeSerialValue对象", description = "编码规则的流水值")
@EqualsAndHashCode(callSuper = true)
public class CodeSerialValue extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 4585738864706015777L;
    /**
     * ç¼–码规则的主键
     */
    //@VciUseRefer(MdmBtmTypeConstant.CODE_RULE)
    private String codeRuleOid;
    /***
     * æµæ°´ä¾èµ–
     */
    private String serialUnit;
    /**
     * ç æ®µçš„主键
     */
    private String codeSecOid;
    /**
     * æœ€å¤§æµæ°´å·
     */
    private String maxSerial;
    public String getCodeRuleOid() {
        return codeRuleOid;
    }
    public void setCodeRuleOid(String codeRuleOid) {
        this.codeRuleOid = codeRuleOid;
    }
    public String getSerialUnit() {
        return serialUnit;
    }
    public void setSerialUnit(String serialUnit) {
        this.serialUnit = serialUnit;
    }
    public String getCodeSecOid() {
        return codeSecOid;
    }
    public void setCodeSecOid(String codeSecOid) {
        this.codeSecOid = codeSecOid;
    }
    public String getMaxSerial() {
        return maxSerial;
    }
    public void setMaxSerial(String maxSerial) {
        this.maxSerial = maxSerial;
    }
    @Override
    public String toString() {
        return "CodeSerialValueDO{" +
                "codeRuleOid='" + codeRuleOid + '\'' +
                ", serialUnit='" + serialUnit + '\'' +
                ", codeSecOid='" + codeSecOid + '\'' +
                ", maxSerial='" + maxSerial + '\'' +
                "} " + super.toString();
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java
@@ -21,9 +21,9 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/revision/service/RevisionModelUtil.java
@@ -7,28 +7,31 @@
//package com.vci.starter.revision.service;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.code.bo.TreeWrapperOptions;
import com.vci.ubcs.code.entity.BaseModel;
import com.vci.ubcs.com.vci.starter.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.service.VciSecretServiceI;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors;
@Component
public class RevisionModelUtil implements VciSecretServiceI {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    public static volatile Map<String, Map<String, String>> modelColumnAnnotationMap = new ConcurrentHashMap();
//    public static volatile Map<String, VciBtmType> modelAnnotationMap = new ConcurrentHashMap();
    public static boolean CHECK_IDEMPOTENCE = false;
    public void copyFromDTOIgnore(Object dto, BaseModel baseModel) {
        VciBaseUtil.alertNotNull(new Object[]{dto, "数据传输对象", baseModel, "数据库中的数据对象"});
        BaseModel tempModel = new BaseModel();
@@ -40,6 +43,7 @@
        baseModel.setDescription(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("description", dto)));
        tempModel = null;
    }
    public <T, R> List<Tree> doList2Trees(List<T> doList, TreeWrapperOptions wrapperOptions, Function<T, R> f) {
        if (CollectionUtils.isEmpty(doList)) {
            return new ArrayList();
@@ -69,7 +73,7 @@
                        tree.setText((String)textValues.stream().collect(Collectors.joining(wrapperOptions.getTextValueSep())));
                    }
                    if (StringUtil.isNotBlank(wrapperOptions.getParentFieldName())) {
                    if (StringUtils.isNotBlank(wrapperOptions.getParentFieldName())) {
                        tree.setParentId(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField(wrapperOptions.getParentFieldName(), doObject)));
                    }
@@ -91,7 +95,7 @@
                        wrapperOptions.setParentOid("");
                    }
                    if (!StringUtil.isBlank(tree.getParentId()) && (!StringUtil.isNotBlank(wrapperOptions.getParentOid()) || !wrapperOptions.getParentOid().equalsIgnoreCase(tree.getParentId()))) {
                    if (!StringUtils.isBlank(tree.getParentId()) && (!StringUtils.isNotBlank(wrapperOptions.getParentOid()) || !wrapperOptions.getParentOid().equalsIgnoreCase(tree.getParentId()))) {
                        children.add(tree);
                    } else {
                        allTree.add(tree);
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/enumpck/BaseEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.vci.ubcs.com.vci.starter.web.enumpck;
public interface BaseEnum {
    String getValue();
    String getText();
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/enumpck/OsCodeFillTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.vci.ubcs.com.vci.starter.web.enumpck;
//package com.vci.web.enumpck;
/**
 * ç¼–码的补位方式
 * @author weidy
 * @date 2020/3/28
 */
//@VciEnum(name = EnumIdConstant.CODE_FILL_TYPE,text = "编码补位方式",description = "不补位,左补位,右补位")
public enum OsCodeFillTypeEnum implements BaseEnum {
    /**
     * ä¸è¡¥ä½
     */
    NONE("code_fill_none","不补位"),
    /**
     * å·¦è¡¥ä½
     */
    LEFT("code_fill_left","左补位"),
    /**
     * å³è¡¥ä½
     */
    RIGHT("code_fill_right","右补位");
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private OsCodeFillTypeEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (OsCodeFillTypeEnum wenum : OsCodeFillTypeEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (OsCodeFillTypeEnum wenum : OsCodeFillTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static OsCodeFillTypeEnum forValue(String value) {
        for (OsCodeFillTypeEnum wenum : OsCodeFillTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/BaseQueryObject.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,165 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
//package com.vci.starter.web.pagemodel;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class BaseQueryObject implements Serializable {
    @JSONField(
        serialize = false,
        deserialize = false
    )
    private static final long serialVersionUID = 5608634730007623041L;
    @JSONField
    private Map<String, String> conditionMap = new HashMap();
    @JSONField
    private int page = 1;
    @JSONField
    private String sort;
    @JSONField
    private String order;
    @JSONField
    private int limit = 25;
    public BaseQueryObject() {
    }
    public BaseQueryObject(Map<String, String> conditionMap) {
        this.setConditionMap(conditionMap);
    }
    public BaseQueryObject(int limit) {
        this.setLimit(limit);
    }
    public BaseQueryObject(Map<String, String> conditionMap, int limit) {
        this.setConditionMap(conditionMap);
        this.setLimit(limit);
    }
    public Map<String, String> getConditionMap() {
        return this.conditionMap;
    }
    public Map<String, String> getConditionMapByNick(String nick) {
        if (this.conditionMap != null) {
            Map<String, String> conditionMapHasNick = new HashMap();
            this.conditionMap.forEach((k, v) -> {
                if (!k.contains(".")) {
                    conditionMapHasNick.put(nick + "." + k, v);
                } else {
                    conditionMapHasNick.put(k, v);
                }
            });
            return conditionMapHasNick;
        } else {
            return null;
        }
    }
    public void setConditionMap(Map<String, String> conditionMap) {
        this.conditionMap = conditionMap;
    }
    public int getPage() {
        return this.page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public String getSort() {
        return this.sort;
    }
    public void setSort(String sort) {
        this.sort = sort;
    }
    public String getOrder() {
        return this.order;
    }
    public void setOrder(String order) {
        this.order = order;
    }
    public int getLimit() {
        return this.limit;
    }
    public void setLimit(int limit) {
        this.limit = limit;
    }
    @JSONField(
        serialize = false,
        deserialize = false
    )
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper(this.limit);
        pageHelper.setPage(this.getPage());
        pageHelper.setSort(this.getSort());
        pageHelper.setOrder(this.getOrder());
        return pageHelper;
    }
    public BaseQueryObject addSort(String sort, String order) {
        this.setSort(StringUtils.isBlank(this.getSort()) ? sort : this.getSort() + "," + sort);
        this.setOrder(StringUtils.isBlank(this.getOrder()) ? order : this.getOrder() + "," + order);
        return this;
    }
    public BaseQueryObject addCondition(String key, String value) {
        if (this.getConditionMap() == null) {
            this.conditionMap = new HashMap();
        }
        this.conditionMap.put(key, value);
        return this;
    }
    public BaseQueryObject page(PageHelper pageHelper) {
        this.setSort(pageHelper.getSort());
        this.setOrder(pageHelper.getOrder());
        this.setPage(pageHelper.getPage());
        this.setLimit(pageHelper.getLimit());
        return this;
    }
    @JSONField(
        serialize = false,
        deserialize = false
    )
    public Map<String, String> getFeignRequestMap() {
        Map<String, String> feignRequestMap = new HashMap();
        if (this.conditionMap != null) {
            this.getConditionMap().forEach((k, v) -> {
                feignRequestMap.put("conditionMap[\"" + k + "\"]", v);
            });
        }
        feignRequestMap.put("page", this.getPage() + "");
        feignRequestMap.put("limit", this.getLimit() + "");
        feignRequestMap.put("sort", this.getSort());
        feignRequestMap.put("order", this.getOrder());
        return feignRequestMap;
    }
    @Override
    public String toString() {
        return "BaseQueryObject{conditionMap=" + this.conditionMap + ", page=" + this.page + ", sort='" + this.sort + '\'' + ", order='" + this.order + '\'' + ", limit=" + this.limit + '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/KeyValue.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.starter.web.pagemodel;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class KeyValue implements Serializable {
    private static final long serialVersionUID = 7708882804529442626L;
    private String key;
    private String value;
    private Map<String, Object> attributes = new HashMap();
    public KeyValue() {
    }
    public String getKey() {
        return this.key;
    }
    public void setKey(String key) {
        this.key = key;
    }
    public String getValue() {
        return this.value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public Map<String, Object> getAttributes() {
        return this.attributes;
    }
    public void setAttributes(Map<String, Object> attributes) {
        this.attributes = attributes;
    }
    public void addAttr(String attr, Object attrValue) {
        this.attributes.put(attr, attrValue);
    }
    @Override
    public String toString() {
        return "KeyValue{key='" + this.key + '\'' + ", value='" + this.value + '\'' + ", attributes=" + this.attributes + '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/PageHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,239 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
//package com.vci.starter.web.pagemodel;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
public class PageHelper implements Serializable {
    private static final long serialVersionUID = -588765760880887850L;
    private int page;
    private String sort;
    private String order;
    private int start = 0;
    private int limit = 25;
    private boolean queryTotal = true;
    private String ordersql;
    private String nick;
    public final String asc = "asc";
    public final String desc = "desc";
    private Set<String> unNickField = new HashSet();
    public PageHelper() {
    }
    public PageHelper(int limit) {
        this.limit = limit;
        this.page = 1;
    }
    public PageHelper(int limit, boolean queryTotal) {
        this.limit = limit;
        this.queryTotal = queryTotal;
    }
    public PageHelper(String sort) {
        this.sort = sort;
        this.limit = -1;
        this.order = "asc";
    }
    public PageHelper(String sort, String order) {
        this.sort = sort;
        this.limit = -1;
        this.order = order;
    }
    public PageHelper(int limit, String sort, String order) {
        this.limit = limit;
        this.sort = sort;
        this.order = order;
    }
    public PageHelper(int limit, int page, String sort, String order) {
        this.limit = limit;
        this.page = page;
        this.sort = sort;
        this.order = order;
    }
    public int getPage() {
        return this.page;
    }
    public void setPage(int page) {
        this.page = page;
        if (page > 0 && this.limit > 0) {
            this.start = (this.page - 1) * this.limit;
        }
    }
    public void setSort(String sort) {
        this.sort = sort;
    }
    public String getOrder() {
        return this.order;
    }
    public void setOrder(String order) {
        this.order = order;
    }
    public int getStart() {
        return this.limit <= 0 ? 0 : (this.page - 1) * this.limit + 1;
    }
    public boolean isQueryTotal() {
        return this.queryTotal;
    }
    public void setQueryTotal(boolean queryTotal) {
        this.queryTotal = queryTotal;
    }
    public int getLimit() {
        return this.limit;
    }
    public void setLimit(int limit) {
        this.limit = limit;
        if (this.page > 0 && this.limit > 0) {
            this.start = (this.page - 1) * this.limit + 1;
        }
    }
    public void addSort(String sort, String order) {
        this.setSort(StringUtils.isBlank(this.getSort()) ? sort : this.getSort() + "," + sort);
        this.setOrder(StringUtils.isBlank(this.getOrder()) ? order : this.getOrder() + "," + order);
    }
    public void addAsc(String field) {
        this.addSort(field, "asc");
    }
    public void addDefaultAsc(String field) {
        if (StringUtils.isBlank(this.getSort()) && StringUtils.isBlank(this.getOrder())) {
            this.addAsc(field);
        }
    }
    public void addDefaultDesc(String field) {
        if (StringUtils.isBlank(this.getSort()) && StringUtils.isBlank(this.getOrder())) {
            this.addDesc(field);
        }
    }
    public void addDesc(String field) {
        this.addSort(field, "desc");
    }
    public String getSort() {
        return this.sort;
    }
    public void setStart(int start) {
        this.start = start;
    }
    public String getOrdersql() {
        if ((this.ordersql == null || this.ordersql.trim().length() == 0) && this.sort != null && this.sort.trim().length() > 0 && this.order != null && this.order.trim().length() > 0) {
            if (this.sort.indexOf(",") > -1) {
                String[] sortArray = this.sort.split(",");
                String[] orderArray = this.order.split(",");
                StringBuilder sb = new StringBuilder();
                for(int i = 0; i < sortArray.length; ++i) {
                    if (StringUtils.isNotBlank(sortArray[i]) && orderArray.length > i && StringUtils.isNotBlank(orderArray[i])) {
                        if (sortArray[i].indexOf(".") < 0 && !this.unNickField.contains(sortArray[i].toLowerCase())) {
                            sb.append(StringUtils.isBlank(this.getNick()) ? "" : this.getNick() + ".");
                        }
                        sb.append(sortArray[i].toLowerCase());
                        sb.append(" ");
                        sb.append(orderArray[i]);
                        sb.append(",");
                    }
                }
                this.ordersql = " order by " + sb.toString();
                if (this.ordersql.endsWith(",")) {
                    this.ordersql = this.ordersql.substring(0, this.ordersql.length() - 1);
                }
            } else {
                this.ordersql = " order by " + this.sort + " " + this.order;
            }
        }
        return this.ordersql;
    }
    public String getOrderSql(String nick) {
        if ((this.ordersql == null || this.ordersql.trim().length() == 0) && this.sort != null && this.sort.trim().length() > 0 && this.order != null && this.order.trim().length() > 0) {
            if (this.sort.indexOf(",") > -1) {
                String[] sortArray = this.sort.split(",");
                String[] orderArray = this.order.split(",");
                StringBuilder sb = new StringBuilder();
                for(int i = 0; i < sortArray.length; ++i) {
                    if (StringUtils.isNotBlank(sortArray[i]) && orderArray.length > i && StringUtils.isNotBlank(orderArray[i])) {
                        if (sortArray[i].indexOf(".") < 0) {
                            sb.append(StringUtils.isBlank(nick) ? "" : nick + ".");
                        }
                        sb.append(sortArray[i].toLowerCase());
                        sb.append(" ");
                        sb.append(orderArray[i]);
                        sb.append(",");
                    }
                }
                this.ordersql = " order by " + sb.toString();
                if (this.ordersql.endsWith(",")) {
                    this.ordersql = this.ordersql.substring(0, this.ordersql.length() - 1);
                }
            } else {
                this.ordersql = " order by " + nick + "." + this.sort + " " + this.order;
            }
        }
        return this.ordersql;
    }
    public String getNick() {
        return this.nick;
    }
    public void setNick(String nick) {
        this.nick = nick;
    }
    public void setOrdersql(String ordersql) {
        this.ordersql = ordersql;
    }
    @Override
    public String toString() {
        return "PageHelper{page=" + this.page + ", sort='" + this.sort + '\'' + ", order='" + this.order + '\'' + ", start=" + this.start + ", limit=" + this.limit + ", queryTotal=" + this.queryTotal + ", ordersql='" + this.ordersql + '\'' + ", nick='" + this.nick + '\'' + ", asc='" + "asc" + '\'' + ", desc='" + "desc" + '\'' + ", unNickField=" + this.unNickField + '}';
    }
    public Set<String> getUnNickField() {
        return this.unNickField;
    }
    public void setUnNickField(Set<String> unNickField) {
        this.unNickField = unNickField;
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UIFieldSortVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.web.pageModel;
/**
 * å­—段的排序
 * @author weidy
 * @date 2022-04-21
 */
public class UIFieldSortVO implements java.io.Serializable{
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 3364856602124197925L;
    /**
     * æŽ’序的字段
     */
    private String field;
    /**
     * æŽ’序的类型
     */
    private String type;
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Override
    public String toString() {
        return "UIFieldSortVO{" +
            "field='" + field + '\'' +
            ", type='" + type + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UIFormReferVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,349 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.web.pageModel;
import java.util.List;
import java.util.Map;
/**
 * å‚照的配置
 * @author weidy
 * @date 2021/2/24
 */
public class UIFormReferVO implements java.io.Serializable{
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 1459005348514757537L;
    /**
     * å‚照的窗口类型
     */
    private String type;
    /**
     * æ˜¾ç¤ºçš„字段属性
     */
    private String textField = "name";
    /**
     * å€¼çš„属性
     */
    private String valueField = "oid";
    /**
     * æ˜¯å¦å¤šé€‰
     */
    private boolean muti = false;
    /**
     * åŽå°åœ°å€
     */
    private String url;
    /**
     * æœåŠ¡çš„åœ°å€
     */
    private String backPath;
    /**
     * è¯·æ±‚后台的形式
     */
    private String method = "GET";
    /**
     * é«˜åº¦
     */
    private Integer height;
    //通用的参照
    /**
     * å‚照的业务类型
     */
    private String referType;
    /**
     * å‚ç…§çš„UI上下文
     */
    private String referContent;
    //树形的参照
    /**
     * ä¸Šçº§å­—段
     */
    private String parentFieldName;
    /**
     * ä¸Šçº§å­—段的内容对应的属性的值
     */
    private String parentUsedField;
    /**
     * ä¸Šçº§å­—段的值
     */
    private String parentValue;
    /**
     * åŠ è½½æ–¹å¼
     */
    private String loadType = "all";
    /**
     * æ˜¯å¦åªèƒ½é€‰æ‹©å¶å­èŠ‚ç‚¹
     */
    private boolean onlyLeaf = false;
    /**
     * è¿‡æ»¤(级联)属性
     */
    private String useFormKey;
    /**
     * è¿‡æ»¤å±žæ€§è¯·æ±‚参数
     */
    private String paramForFormKey;
    /**
     * æ˜ å°„其他属性
     */
    private String mapFields;
    //列表的参照
    /**
     * æ˜¾ç¤ºçš„列表
     */
    private String displayTable;
    /**
     * è¡¨æ ¼çš„自定义定义
     */
    private UITableCustomDefineVO tableConfig;
    /**
     * ç­›é€‰æ¡ä»¶
     */
    private Map<String,String> where;
    /**
     * åŽå°æŽ’序
     */
    private boolean remoteSort;
    /**
     * åˆå§‹åŒ–排序
     */
    private UIFieldSortVO initSort;
    public boolean isRemoteSort() {
        return remoteSort;
    }
    public void setRemoteSort(boolean remoteSort) {
        this.remoteSort = remoteSort;
    }
    public UIFieldSortVO getInitSort() {
        return initSort;
    }
    public void setInitSort(UIFieldSortVO initSort) {
        this.initSort = initSort;
    }
    public String getParentUsedField() {
        return parentUsedField;
    }
    public void setParentUsedField(String parentUsedField) {
        this.parentUsedField = parentUsedField;
    }
    public Map<String, String> getWhere() {
        return where;
    }
    public void setWhere(Map<String, String> where) {
        this.where = where;
    }
    public String getUseFormKey() {
        return useFormKey;
    }
    public void setUseFormKey(String useFormKey) {
        this.useFormKey = useFormKey;
    }
    public String getParamForFormKey() {
        return paramForFormKey;
    }
    public void setParamForFormKey(String paramForFormKey) {
        this.paramForFormKey = paramForFormKey;
    }
    public String getMapFields() {
        return mapFields;
    }
    public void setMapFields(String mapFields) {
        this.mapFields = mapFields;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTextField() {
        return textField;
    }
    public void setTextField(String textField) {
        this.textField = textField;
    }
    public String getValueField() {
        return valueField;
    }
    public void setValueField(String valueField) {
        this.valueField = valueField;
    }
    public boolean isMuti() {
        return muti;
    }
    public void setMuti(boolean muti) {
        this.muti = muti;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getBackPath() {
        return backPath;
    }
    public void setBackPath(String backPath) {
        this.backPath = backPath;
    }
    public String getMethod() {
        return method;
    }
    public void setMethod(String method) {
        this.method = method;
    }
    public Integer getHeight() {
        return height;
    }
    public void setHeight(Integer height) {
        this.height = height;
    }
    public String getReferType() {
        return referType;
    }
    public void setReferType(String referType) {
        this.referType = referType;
    }
    public String getReferContent() {
        return referContent;
    }
    public void setReferContent(String referContent) {
        this.referContent = referContent;
    }
    public String getParentFieldName() {
        return parentFieldName;
    }
    public void setParentFieldName(String parentFieldName) {
        this.parentFieldName = parentFieldName;
    }
    public String getParentValue() {
        return parentValue;
    }
    public void setParentValue(String parentValue) {
        this.parentValue = parentValue;
    }
    public String getLoadType() {
        return loadType;
    }
    public void setLoadType(String loadType) {
        this.loadType = loadType;
    }
    public boolean isOnlyLeaf() {
        return onlyLeaf;
    }
    public void setOnlyLeaf(boolean onlyLeaf) {
        this.onlyLeaf = onlyLeaf;
    }
    public String getDisplayTable() {
        return displayTable;
    }
    public void setDisplayTable(String displayTable) {
        this.displayTable = displayTable;
    }
    public UITableCustomDefineVO getTableConfig() {
        return tableConfig;
    }
    public void setTableConfig(UITableCustomDefineVO tableConfig) {
        this.tableConfig = tableConfig;
    }
    @Override
    public String toString() {
        return "UIFormReferVO{" +
            "type='" + type + '\'' +
            ", textField='" + textField + '\'' +
            ", valueField='" + valueField + '\'' +
            ", muti=" + muti +
            ", url='" + url + '\'' +
            ", backPath='" + backPath + '\'' +
            ", method='" + method + '\'' +
            ", height=" + height +
            ", referType='" + referType + '\'' +
            ", referContent='" + referContent + '\'' +
            ", parentFieldName='" + parentFieldName + '\'' +
            ", parentValue='" + parentValue + '\'' +
            ", loadType='" + loadType + '\'' +
            ", onlyLeaf=" + onlyLeaf +
            ", useFormKey='" + useFormKey + '\'' +
            ", paramForFormKey='" + paramForFormKey + '\'' +
            ", mapFields='" + mapFields + '\'' +
            ", displayTable='" + displayTable + '\'' +
            ", tableConfig=" + tableConfig +
            ", where=" + where +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITableCustomDefineVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.web.pageModel;
import java.util.List;
/**
 * è¡¨æ ¼çš„自定义
 * @author weidy
 * @date 2021/2/25
 */
public class UITableCustomDefineVO implements java.io.Serializable{
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 431728683965836558L;
    /**
     * ä¸»é”®
     */
    private String oid;
    /**
     * åˆ†é¡µçš„对象
     */
    private UITablePageVO page;
    /**
     * æ˜¾ç¤ºçš„列
     */
    private List<UITableFieldVO> cols;
    /**
     * æŸ¥è¯¢çš„列
     */
    private List<UITableFieldVO> queryColumns;
    public String getOid() {
        return oid;
    }
    public void setOid(String oid) {
        this.oid = oid;
    }
    public UITablePageVO getPage() {
        return page;
    }
    public void setPage(UITablePageVO page) {
        this.page = page;
    }
    public List<UITableFieldVO> getCols() {
        return cols;
    }
    public void setCols(List<UITableFieldVO> cols) {
        this.cols = cols;
    }
    public List<UITableFieldVO> getQueryColumns() {
        return queryColumns;
    }
    public void setQueryColumns(List<UITableFieldVO> queryColumns) {
        this.queryColumns = queryColumns;
    }
    @Override
    public String toString() {
        return "UITableCustomDefineVO{" +
            "oid='" + oid + '\'' +
            ", page=" + page +
            ", cols=" + cols +
            ", queryColumns=" + queryColumns +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITableFieldVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,398 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.web.pageModel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * åˆ—表的列的信息
 * @author weidy
 * @date 2021/2/25
 */
public class UITableFieldVO implements java.io.Serializable{
    /**
     * åˆ—名
     */
    private String field;
    /**
     * æ˜¾ç¤ºçš„名称
     */
    private String title;
    /**
     * å­—段类型
     */
    private String fieldType;
    /**
     * æ˜¯å¦æŽ’序
     */
    private boolean sort = false;
    /**
     * æŽ’序字段
     */
    private String sortField ;
    /**
     * éšè—çš„字段
     */
    private boolean hidden = false;
    /**
     * å®½åº¦
     */
    private Integer width;
    /**
     * æœ€å°çš„宽度
     */
    private Integer minWidth;
    /**
     * å›ºå®šä½ç½®ï¼Œæ”¯æŒright和left
     */
    private String fixed;
    /**
     * æ‰€å çš„列
     */
    private Integer colspan = 1;
    /**
     * æ‰€ç«™çš„行
     */
    private Integer rowspan = 1;
    /**
     * æ¨¡æ¿çš„的内容
     */
    private String templet;
    /**
     * æ—¶é—´æ ¼å¼
     */
    private String dateFormate;
    /**
     * æ˜¯å¦æ“ä½œåˆ—
     */
    private boolean optionField = false;
    /**
     * æ“ä½œåˆ—包含的按钮
     */
    private List<KeyValue> optionButtons;
    /**
     * äº‹ä»¶-执行js的映射
     */
    private Map<String,String> optionJsMap;
    /**
     * æ˜¯å¦ç¼–辑
     */
    private String edit;
    /**
     * ç¼–辑的配置
     */
    private String editConfig ;
    /**
     * å¯¹é½æ–¹å¼
     */
    private String align = "left";
    /**
     * ç‰¹æ®Šæ ·å¼
     */
    private String style;
    /**
     * å•元格点击事件
     */
    private String event;
    /**
     * ç¦ç”¨æ‹–拽列宽
     */
    private boolean unresize = false;
    /**
     * ä¸‹æ‹‰èœå•的名称
     */
    private String comboxKey;
    /**
     * ä¸‹æ‹‰èœå•的选项值
     */
    private List<KeyValue> data = new ArrayList<>();
    /**
     * å‚照显示的字段
     */
    private String showField;
    /**
     * æŸ¥è¯¢çš„字段
     */
    private String queryField;
    /**
     * å‚照的信息
     */
    private UIFormReferVO referConfig;
    public Map<String, String> getOptionJsMap() {
        return optionJsMap;
    }
    public void setOptionJsMap(Map<String, String> optionJsMap) {
        this.optionJsMap = optionJsMap;
    }
    public String getFieldType() {
        return fieldType;
    }
    public void setFieldType(String fieldType) {
        this.fieldType = fieldType;
    }
    public String getDateFormate() {
        return dateFormate;
    }
    public void setDateFormate(String dateFormate) {
        this.dateFormate = dateFormate;
    }
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public boolean isSort() {
        return sort;
    }
    public void setSort(boolean sort) {
        this.sort = sort;
    }
    public String getSortField() {
        return sortField;
    }
    public void setSortField(String sortField) {
        this.sortField = sortField;
    }
    public boolean isHidden() {
        return hidden;
    }
    public void setHidden(boolean hidden) {
        this.hidden = hidden;
    }
    public Integer getWidth() {
        return width;
    }
    public void setWidth(Integer width) {
        this.width = width;
    }
    public Integer getMinWidth() {
        return minWidth;
    }
    public void setMinWidth(Integer minWidth) {
        this.minWidth = minWidth;
    }
    public String getFixed() {
        return fixed;
    }
    public void setFixed(String fixed) {
        this.fixed = fixed;
    }
    public Integer getColspan() {
        return colspan;
    }
    public void setColspan(Integer colspan) {
        this.colspan = colspan;
    }
    public Integer getRowspan() {
        return rowspan;
    }
    public void setRowspan(Integer rowspan) {
        this.rowspan = rowspan;
    }
    public String getTemplet() {
        return templet;
    }
    public void setTemplet(String templet) {
        this.templet = templet;
    }
    public boolean isOptionField() {
        return optionField;
    }
    public void setOptionField(boolean optionField) {
        this.optionField = optionField;
    }
    public List<KeyValue> getOptionButtons() {
        return optionButtons;
    }
    public void setOptionButtons(List<KeyValue> optionButtons) {
        this.optionButtons = optionButtons;
    }
    public String getEdit() {
        return edit;
    }
    public void setEdit(String edit) {
        this.edit = edit;
    }
    public String getEditConfig() {
        return editConfig;
    }
    public void setEditConfig(String editConfig) {
        this.editConfig = editConfig;
    }
    public String getAlign() {
        return align;
    }
    public void setAlign(String align) {
        this.align = align;
    }
    public String getStyle() {
        return style;
    }
    public void setStyle(String style) {
        this.style = style;
    }
    public String getEvent() {
        return event;
    }
    public void setEvent(String event) {
        this.event = event;
    }
    public boolean isUnresize() {
        return unresize;
    }
    public void setUnresize(boolean unresize) {
        this.unresize = unresize;
    }
    public String getComboxKey() {
        return comboxKey;
    }
    public void setComboxKey(String comboxKey) {
        this.comboxKey = comboxKey;
    }
    public List<KeyValue> getData() {
        return data;
    }
    public void setData(List<KeyValue> data) {
        this.data = data;
    }
    public String getShowField() {
        return showField;
    }
    public void setShowField(String showField) {
        this.showField = showField;
    }
    public UIFormReferVO getReferConfig() {
        return referConfig;
    }
    public void setReferConfig(UIFormReferVO referConfig) {
        this.referConfig = referConfig;
    }
    public String getQueryField() {
        return queryField;
    }
    public void setQueryField(String queryField) {
        this.queryField = queryField;
    }
    @Override
    public String toString() {
        return "UITableFieldVO{" +
            "field='" + field + '\'' +
            ", title='" + title + '\'' +
            ", fieldType='" + fieldType + '\'' +
            ", sort=" + sort +
            ", sortField='" + sortField + '\'' +
            ", hidden=" + hidden +
            ", width=" + width +
            ", minWidth=" + minWidth +
            ", fixed='" + fixed + '\'' +
            ", colspan=" + colspan +
            ", rowspan=" + rowspan +
            ", templet='" + templet + '\'' +
            ", dateFormate='" + dateFormate + '\'' +
            ", optionField=" + optionField +
            ", optionButtons=" + optionButtons +
            ", optionJsMap=" + optionJsMap +
            ", edit='" + edit + '\'' +
            ", editConfig='" + editConfig + '\'' +
            ", align='" + align + '\'' +
            ", style='" + style + '\'' +
            ", event='" + event + '\'' +
            ", unresize=" + unresize +
            ", comboxKey='" + comboxKey + '\'' +
            ", data=" + data +
            ", showField='" + showField + '\'' +
            ", queryField='" + queryField + '\'' +
            ", referConfig=" + referConfig +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/pagemodel/UITablePageVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.vci.ubcs.com.vci.starter.web.pagemodel;
//package com.vci.web.pageModel;
/**
 * è¡¨æ ¼çš„分页对象
 * @author weidy
 * @date 2021/2/25
 */
public class UITablePageVO implements java.io.Serializable{
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = -6338518925812603615L;
    /**
     * æ¯é¡µæ˜¾ç¤ºæ•°é‡
     */
    private Integer limit = -1;
    /**
     * å½“前页数
     */
    private Integer page = 1;
    public Integer getLimit() {
        return limit;
    }
    public void setLimit(Integer limit) {
        this.limit = limit;
    }
    public Integer getPage() {
        return page;
    }
    public void setPage(Integer page) {
        this.page = page;
    }
    @Override
    public String toString() {
        return "UITablePageVO{" +
            "limit=" + limit +
            ", page=" + page +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/service/VciSecretServiceI.java
@@ -1,9 +1,9 @@
package com.vci.ubcs.com.vci.starter.web.service;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.com.vci.starter.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.enumpck.UserSecretEnum;
import com.vci.ubcs.com.vci.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
public interface VciSecretServiceI {
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/BeanUtilForVCI.java
@@ -5,7 +5,6 @@
//
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.com.vci.starter.util.VciBaseUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/VciBaseUtil.java
@@ -34,6 +34,7 @@
import java.util.stream.Collectors;
public class VciBaseUtil {
    private static Logger log = LoggerFactory.getLogger(VciBaseUtil.class);
    public static final String NOTIN = "not in";
    private static String localIp = null;
@@ -43,6 +44,15 @@
    public static String getPk() {
        return UUID.randomUUID().toString();
    }
    public static SessionInfo getCurrentUserSessionInfo() throws VciBaseException {
        SessionInfo si = getCurrentUserSessionInfoNotException();
        if (si == null) {
            throw new VciBaseException("noLogin", new String[]{"没有当前用户信息"});
        } else {
            return si;
        }
    }
    public static int getIntForBoolean(boolean b) {
@@ -1132,5 +1142,6 @@
            return listHasList;
        }
    }
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/VciDateUtil.java
@@ -5,7 +5,6 @@
//
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.com.vci.starter.util.VciBaseUtil;
import java.sql.Timestamp;
import java.text.ParseException;
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/util/WebUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,712 @@
package com.vci.ubcs.com.vci.starter.web.util;
//package com.vci.web.util;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.pagemodel.SessionInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.*;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.*;
import java.util.stream.Collectors;
/**
 * é€šç”¨å·¥å…·ç±»
 * @author weidy
 * @date 2021-2-13
 */
@Component
public  class WebUtil extends VciBaseUtil {
    /**
     * å…¨éƒ¨æ ‡è®°ï¼Œå¸¸ç”¨è¯­æ ‘形展示时
     */
    public static final String ALL = "${all}";
    /**
     * æ˜¯å¦æŒä¹…化
     */
    private static ThreadLocal<String> needPersistenceInThread = new ThreadLocal<>();
    /**
     * æ—¥å¿—对象
     */
    private static Logger logger = LoggerFactory.getLogger(WebUtil.class);
    /**
     * json字符串转为对象
     * @param jsonString json的字符串
     * @param beanClass bean的类
     * @return bean
     */
    public static <T> T jsonString2JavaBean(String jsonString,Class<T> beanClass){
        return (T)JSONObject.parseObject(jsonString,  beanClass);
    }
    /**
     * ä»Žjson字符串中获取第一个对象
     * @param jsonString json的字符串
     * @param beanClass Bean的类
     * @return ä»Žåˆ—表里获取第一个对象
     */
    public static <T> T getFirstObjectFromJson(String jsonString,Class<T> beanClass){
        if(!isNull(jsonString)) {
            return JSONObject.parseArray(jsonString, beanClass).get(0);
        } else {
            return null;
        }
    }
    /**
     * èŽ·å–sessionInfo对象
     * @return èŽ·å–å½“å‰ç”¨æˆ·çš„ä¿¡æ¯
     */
    public static SessionInfo getSessionInfo(){
        try{
            return getCurrentUserSessionInfoNotException();
        }catch(Exception e){
            return null;
        }
    }
    /**
     * èŽ·å–å½“å‰çº¿ç¨‹ä¸­çš„ç”¨æˆ·å¯¹è±¡
     * @return å½“前用户信息
     * @throws VciBaseException æ²¡æœ‰ç™»å½•会抛出异常
     */
    public static SessionInfo getCurrentUserSessionInfo() throws VciBaseException{
        SessionInfo si= getCurrentUserSessionInfoNotException();
        if(si==null){
            throw new VciBaseException("noLogin",new String[]{"没有当前用户信息"});
        }
        return si;
    }
    /**
     * èŽ·å–å½“å‰çº¿ç¨‹ä¸­çš„ç”¨æˆ·å¯¹è±¡
     * @return ç”¨æˆ·å¯¹è±¡ï¼Œä½†æ˜¯ä¸æŠ›å‡ºå¼‚常
     */
    public static SessionInfo getCurrentUserSessionInfoNotException() {
        return WebThreadLocalUtil.getCurrentUserSessionInfoInThread().get();
    }
    /**
     * è®¾ç½®ç”¨æˆ·çš„会话信息对象
     * @param sessionInfo ä¼šè¯ä¿¡æ¯
     */
    public static synchronized void setSessionInfo(SessionInfo sessionInfo){
        WebThreadLocalUtil.getCurrentUserSessionInfoInThread().set(sessionInfo);
    }
    /**
     * æ˜¯å¦è®¾ç½®äº†corba需要使用的上下文信息,只针对webService的
     */
    private static volatile boolean isSetContext = false;
    /**
     * èŽ·å–IP地址,通过request
     * @param request è¯·æ±‚的对象
     * @return ip地址
     */
    public static String getClientInfo(HttpServletRequest request){
        String ip = request.getHeader("X-Forwarded-For");
        if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        if (StringUtils.isBlank(ip) || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {//0:0:0:0:0:0:0:1是本机在访问
            ip = "127.0.0.1";
        }
        return ip;
    }
    /**
     * è®¾ç½®æ˜¯å¦æŒä¹…化
     * @param isPersistence æ˜¯å¦æŒä¹…化
     */
    public static void setPersistence(boolean isPersistence){
        if(!isPersistence){
            needPersistenceInThread.set("false");
        }else{
            needPersistenceInThread.set("");
        }
    }
    /**
     * å°†å¯¹è±¡è½¬æ¢ä¸ºå­—符串出来
     * @return json字符串
     */
    public static String getJSONStringWithDateFormat(Object obj){
        return JSONObject.toJSONStringWithDateFormat(obj, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
    }
    /**
     * æœ€æ–°è½¬æ¢ä¸ºmap
     * @param o å¯¹è±¡
     * @return map
     */
    public static Map<String,Object> objectToMap(Object o){
        Map<String,Object> map = new HashMap<String,Object>();
        if(o!=null) {
            String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
            if(StringUtils.isNotBlank(jsonString)) {
                JSONObject jsonObject = JSONObject.parseObject(jsonString);
                if(jsonObject!=null){
                    for(String key : jsonObject.keySet()){
                        map.put(key,jsonObject.get(key));
                    }
                }
            }
        }
        return map;
    }
    /**
     * å¯¹è±¡è½¬æ¢ä¸ºmap
     * @param o å¯¹è±¡
     * @return map
     */
    public static Map<String,String> objectToMapString(Object o){
        Map<String,String> map = new HashMap<String,String>();
        if(o!=null) {
            String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
            if(StringUtils.isNotBlank(jsonString)) {
                JSONObject jsonObject = JSONObject.parseObject(jsonString);
                if(jsonObject!=null){
                    for(String key : jsonObject.keySet()){
                        map.put(key,jsonObject.getString(key));
                    }
                }
            }
        }
        return map;
    }
    /**
     * åˆ¤æ–­æŸä¸ªå±žæ€§æ˜¯å¦ä¸ºç©º
     * @param obj å¯¹è±¡
     * @param f å­—段
     * @return true是不空
     */
    public static boolean isNotNullForField(Object obj,Field f){
        if(!"serialVersionUID".equalsIgnoreCase(f.getName()) &&!"DEFAULT_INITIAL_CAPACITY".equalsIgnoreCase(f.getName())&&null!=obj && !WebUtil.isNullOrNullString(obj.toString())) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * æ•°ç»„转换为字符串
     * @param array æ•°ç»„
     * @return å­—符串
     */
    public static String array2String(String[] array) {
        if(null == array || array.length == 0) {
            return "";
        }else{
            return Arrays.stream(array).collect(Collectors.joining(","));
        }
    }
    /**
     * å¯¹è±¡è½¬æ¢ä¸ºå­—符串
     * @param obj å¯¹è±¡
     * @return å­—符串
     */
    public static String getString(Object obj){
        if(obj == null) {
            return "";
        }
        if(obj instanceof Date) {
            return VciDateUtil.date2Str((Date) obj, VciDateUtil.DateTimeFormat);
        }
        return String.valueOf(obj);
    }
    /**
     * æ‹·è´map里的值
     * @param source æº
     * @param target ç›®æ ‡
     * @param copyField æ‹·è´çš„属性
     */
    public static void copyValueForMap(Map source,Map target,String[] copyField){
        Map<String,String> copyFieldMap = new HashMap<String,String>();
        for(String field : copyField) {
            copyFieldMap.put(field, field);
        }
        copyValueForMap(source,target,copyFieldMap);
    }
    /**
     * ä¸ºmap拷贝值
     * @param source æº
     * @param target ç›®æ ‡
     * @param copyField key为目标对象里的字段,
     */
    public static void copyValueForMap(Map source,Map target,Map<String,String> copyField){
        try{
            Iterator<String> it = copyField.keySet().iterator();
            while(it.hasNext()){
                String field = it.next();
                target.put(field, source.get(copyField.get(field)));
            }
        }catch(Exception e){
            if(logger.isErrorEnabled()){
                logger.error("拷贝值到map",e);
            }
        }
    }
    /**
     * ä»ŽMap里获取double类型
     * @param field å­—段名称
     * @param record map
     * @return å±žæ€§
     */
    public static Double getDoubleFromMap(String field,
                                          Map<String, Object> record) {
        if(WebUtil.isNullOrNullString(field) || record == null || !record.containsKey(field)) {
            return null;
        }else{
            Object v = record.get(field);
            if(v instanceof BigDecimal){
                return ((BigDecimal)v).doubleValue();
            }else if(v instanceof Double){
                return ((Double)v).doubleValue();
            }else{
                return WebUtil.getDouble((String)v);
            }
        }
    }
    /**
     * èŽ·å–ä¸æ˜¯ç©ºå€¼çš„æ˜ å°„ï¼Œä¸”key是小写
     * @param map æ˜ å°„
     * @return åŽ»é™¤ç©ºå€¼çš„
     */
    public static Map getNotNullMap(Map map){
        if(map == null){
            return new HashMap();
        }
        Iterator it = map.keySet().iterator();
        Map unNullMap = new HashMap();
        while(it.hasNext()){
            Object key = it.next();
            String newKey = key.toString().toLowerCase();
            Object value = map.get(key);
            if(value !=null){
                if(value instanceof String && WebUtil.isNotNull(value.toString())){
                    unNullMap.put(newKey, value);
                }else if(!(value instanceof String)){
                    unNullMap.put(newKey, value);
                }
            }
        }
        return unNullMap;
    }
    /**
     * èŽ·å–é›†åˆçš„å…ƒç´ ç±»åž‹
     * @param field å±žæ€§
     * @return å…ƒç´ ç±»åž‹, ä¸æ˜¯é›†åˆçš„æ—¶å€™è¿”回Null
     */
    public static Class getCollectionElementClass(Field field) throws VciBaseException{
        Class fieldClass = null;
        if(field == null){
            return null;
        }
        if(field.getType().isAssignableFrom(List.class) ||
            field.getType().isAssignableFrom(Set.class) ||
            field.getType().isAssignableFrom(Vector.class)){
            Type fc = field.getGenericType();
            if(fc instanceof ParameterizedType){
                ParameterizedType pt = (ParameterizedType)fc;
                fieldClass= (Class)pt.getActualTypeArguments()[0];
            }
        }
        return fieldClass;
    }
    /**
     * èŽ·å–å¯¹è±¡ä¸­çš„æ‰€æœ‰å±žæ€§ï¼ŒåŒ…æ‹¬å…¶ç»§æ‰¿çš„å±žæ€§
     * @param c å¯¹è±¡
     * @return æ‰€æœ‰çš„属性
     */
    public static List<Field> getAllFieldForObj(Class c){
        List<Field> allField = new ArrayList<Field>();
        for(Class<?> classz = c ; classz != Object.class ; classz = classz.getSuperclass() ){
            Field[] thisClassField = classz.getDeclaredFields();
            for(Field field : thisClassField){
                if(!field.getName().equals("serialVersionUID")){
                    if(!allField.contains(field)){
                        allField.add(field);
                    }
                }
            }
        }
        return allField;
    }
    /**
     * èŽ·å–ts的字段
     * @param c å¯¹è±¡æ‰€å±žçš„ç±»
     * @return æ—¶é—´æˆ³çš„对象
     */
    public static Field getTsField(Class c){
        List<Field> allField = getAllFieldForObj(c);
        if(allField!=null&&allField.size()>0){
            for(Field field : allField){
                if(field.getName().equals("ts")){
                    return  field;
                }
            }
        }
        return null;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å­—æ®µ
     * @param field å­—段的名称
     * @param obj å¯¹è±¡
     * @return å­—段对象
     */
    public static Field getFieldForObject(String field,Object obj){
        if(obj == null){
            return null;
        }
        return getFieldForObject(field,obj.getClass());
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å­—æ®µ
     * @param fieldName å­—段的名称
     * @param c å¯¹è±¡ç±»åž‹
     * @return å­—段对象
     */
    public static Field getFieldForObject(String fieldName,Class c){
        List<Field> allField = getAllFieldForObj(c);
        if(allField!=null&&allField.size()>0){
            for(Field field : allField){
                if(field.getName().toLowerCase().equalsIgnoreCase(fieldName.toLowerCase())){
                    return  field;
                }
            }
        }
        return null;
    }
    /**
     * èŽ·å–å­—æ®µçš„setter
     * @param c å¯¹è±¡ç±»
     * @param field å­—段
     * @return æ–¹æ³•
     */
    public static Method getSetmethod(Class c,Field field){
        return getSetmethod(c,field.getName());
    }
    /**
     * èŽ·å–å­—æ®µçš„setter
     * @param c å¯¹è±¡ç±»åž‹
     * @param fieldName å­—段名称
     * @return æ–¹æ³•
     */
    public static Method getSetmethod(Class c,String fieldName){
        if(c!=null&&isNotNull(fieldName)){
            try {
                PropertyDescriptor pd = new PropertyDescriptor(fieldName, c);
                return pd.getWriteMethod();
            } catch (SecurityException e) {
            } catch (IntrospectionException e) {
            }
        }
        return null;
    }
    /**
     * èŽ·å–å­—æ®µçš„getter
     * @param c å¯¹è±¡ç±»åž‹
     * @param fieldName å­—段名称
     * @return æ–¹æ³•
     */
    public static Method getGetmethod(Class c,String fieldName){
        if(c!=null&&isNotNull(fieldName)){
            try {
                PropertyDescriptor pd = new PropertyDescriptor(fieldName, c);
                return pd.getReadMethod();
            } catch (SecurityException e) {
            } catch (IntrospectionException e) {
            }
        }
        return null;
    }
    /**
     * èŽ·å–å­—æ®µçš„getter
     * @param c å¯¹è±¡ç±»åž‹
     * @param field å­—段
     * @return æ–¹æ³•
     */
    public static Method getGetmethod(Class c,Field field){
        return getGetmethod(c,field.getName());
    }
    /**
     * èŽ·å–å¯¹è±¡è½¬æ¢å­—ç¬¦ä¸²
     * @param obj å¯¹è±¡
     * @return å­—符串
     */
    public static String getStringValueFromObject(Object obj){
        if(obj == null){
            return "";
        }else{
            if(obj instanceof Integer || obj instanceof Float || obj instanceof Long || obj instanceof Double){
                return String.valueOf(obj);
            }else if(obj instanceof Date){
                return VciDateUtil.date2Str((Date)obj, VciDateUtil.DateTimeMillFormat);
            }else{
                return obj.toString();
            }
        }
    }
    /**
     * ä¸ºå¯¹è±¡èµ‹å€¼ï¼Œä¸åˆ¤æ–­ç±»åž‹ï¼Œå±žæ€§æ˜¯ä»€ä¹ˆç±»åž‹çš„,value就必须是什么类型
     * @param fieldName å±žæ€§åç§°
     * @param targetObject å¯¹è±¡
     * @param value å±žæ€§å€¼
     */
    public static void setValueToField(String fieldName,Object targetObject,Object value){
        if(isNotNull(fieldName)){
            Method setMethod = getSetmethod(targetObject.getClass(), fieldName);
            try {
                if(setMethod != null){
                    setMethod.invoke(targetObject, value);
                }else{
                    Field field = getFieldForObject(fieldName, targetObject);
                    if(field !=null){
                        field.setAccessible(true);
                        field.set(targetObject, value);
                    }
                }
            } catch (IllegalArgumentException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.setValueToField",e);
                }
            } catch (IllegalAccessException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.setValueToField",e);
                }
            } catch (InvocationTargetException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.setValueToField",e);
                }
            }
        }
    }
    /**
     * ä»Žå¯¹è±¡ä¸ŠèŽ·å–å±žæ€§çš„å€¼
     * @param fieldName å±žæ€§å
     * @param sourceObject å¯¹è±¡
     * @return å€¼
     */
    public static Object getValueFromField(String fieldName,Object sourceObject){
        if(isNotNull(fieldName)){
            try {
                Method getMethod = getGetmethod(sourceObject.getClass(), fieldName);
                if(getMethod !=null){
                    return getMethod.invoke(sourceObject);
                }else{
                    //说明没有设置getter,比如BO和LO对象这种
                    Field field = getFieldForObject(fieldName, sourceObject);
                    if(field !=null){
                        field.setAccessible(true);
                        return field.get(sourceObject);
                    }
                }
            } catch (SecurityException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.getValueFromField",e);
                }
            } catch (IllegalAccessException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.getValueFromField",e);
                }
            } catch (IllegalArgumentException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.getValueFromField",e);
                }
            } catch (InvocationTargetException e) {
                if(logger.isErrorEnabled()){
                    logger.error("WebUtil.getValueFromField",e);
                }
            }
        }
        return null;
    }
    /**
     * æ˜¯å¦ä¸ºæ™®é€šçš„属性
     * @param attrName å±žæ€§çš„名字
     * @return true
     */
    public static boolean isNormalAttr(String attrName){
        attrName = attrName.toLowerCase();
        if(attrName.indexOf(".")<0 && attrName.indexOf("_")<0 && !attrName.equalsIgnoreCase("lcstatustext")){
            return true;
        }else{
            return false;
        }
    }
    /**
     * å°†whereSql里的内容转化到查询map里
     * @param whereSql sql转换为map
     * @return map
     */
    public static Map<String,String>  whereSql2Map(
        String whereSql) {
        Map<String,String> map = new HashMap<String, String>();
        if(isNotNull(whereSql)){
            String[] selects = whereSql.split("and");
            if(selects!=null&&selects.length>0){
                for(String s : selects){
                    s = s.trim();
                    map.put(s.substring(0,s.indexOf(" ")).trim(), s.substring(s.indexOf(" ") +1).trim());
                }
            }
        }
        return map;
    }
    /**
     * æœ¬æœºçš„ip
     */
    private static String localIp = null;
    /**
     * èŽ·å–æœ¬æœºåœ°å€ï¼Œä¸æ˜¯å®¢æˆ·ç«¯ç”µè„‘çš„ip,是当前服务所在的ip
     * @return
     */
    public static String getLocalIp(){
        if(localIp == null){
            try {
                InetAddress inetAddress = getLocalHostLANAddress();
                if (inetAddress == null) {
                    localIp = "127.0.0.1";
                } else {
                    localIp = inetAddress.getHostAddress();
                }
            }catch (Exception e){
                localIp = "127.0.0.1";
            }
        }
        return localIp;
    }
    /**
     * ä»Žç½‘络接口上获取ip地址
     * @return ip地址
     */
    private static InetAddress getLocalHostLANAddress(){
        try {
            InetAddress candidateAddress = null;
            // éåŽ†æ‰€æœ‰çš„ç½‘ç»œæŽ¥å£
            for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
                NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
                // åœ¨æ‰€æœ‰çš„æŽ¥å£ä¸‹å†éåކIP
                for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
                    InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
                    if (!inetAddr.isLoopbackAddress()) {// æŽ’除loopback类型地址
                        if (inetAddr.isSiteLocalAddress()) {
                            // å¦‚果是site-local地址,就是它了
                            return inetAddr;
                        } else if (candidateAddress == null) {
                            // site-local类型的地址未被发现,先记录候选地址
                            candidateAddress = inetAddr;
                        }
                    }
                }
            }
            if (candidateAddress != null) {
                return candidateAddress;
            }
            // å¦‚果没有发现 non-loopback地址.只能用最次选的方案
            InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
            return jdkSuppliedAddress;
        } catch (Exception e) {
            if(logger.isErrorEnabled()){
                logger.error("获取本机ip",e);
            }
        }
        return null;
    }
    /**
     * oracle in æŸ¥è¯¢ä¸èƒ½è¶…过1000,转换一下集合
     * ç”±äºŽSQL语句1000个可能很长,超过oracle10g,所以牺牲性能分配为500个数组
     * @param list éœ€è¦è½¬æ¢çš„列表内容
     * @return åˆ†ç»„后的list
     */
    public static <T> Collection<Collection<T>> switchCollectionForOracleIn(Collection<T> list) {
        return switchCollectionForOracleIn(list,500);
    }
    /**
     * è½¬æ¢é›†åˆçš„大小,这个用在feign调用的时候,不要在sql查询的时候使用
     * @param collection éœ€è¦è½¬æ¢çš„列表内容
     * @param preSize æ¯ä¸ªåˆ†ç»„的大小
     * @return åˆ†ç»„后的list
     */
    public static <T> Collection<Collection<T>> switchCollectionForOracleIn(Collection<T> collection,int preSize) {
        Collection<Collection<T>> listHasList = new ArrayList<Collection<T>>();
        if(collection == null){
            return listHasList;
        }
        List<T> newList = new ArrayList<T>();
        for(Object obj : collection){
            //为了让list还可以添加内容,因为使用sublist后,list不能再Add了
            newList.add((T)obj);
        }
        int muti = 1;
        if(newList.size() >preSize){
            int balance = newList.size()%preSize;
            muti = (newList.size() - balance)/preSize + (balance == 0?0:1);
        }
        for(int i = 0 ; i < muti; i ++){
            int start = i*preSize;
            int end = start + preSize;
            if(i == muti-1 || end >newList.size() ){
                end = newList.size();
            }
            List subList = newList.subList(start,end);
            listHasList.add(subList);
        }
        return listHasList;
    }
}
Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/feign/IUserClient.java
@@ -50,6 +50,7 @@
    String SAVE_USER_LIST = API_PREFIX + "/save-user-list";
    String REMOVE_USER = API_PREFIX + "/remove-user";
    String UPDATE_USER = API_PREFIX+"/update-user";
    String UPDATE_USER_STRATEGY_STATUS = API_PREFIX+"/update-user_strategy_status";
    /**
     * èŽ·å–ç”¨æˆ·ä¿¡æ¯
@@ -134,4 +135,12 @@
    @PostMapping(UPDATE_USER)
    R<Boolean> updateUser(@RequestBody User user);
    /**
     * ä¿®æ”¹ç”¨æˆ·å¯†ç ç­–略是否修改状态
     * @param userIds
     * @return
     */
    @PostMapping(UPDATE_USER_STRATEGY_STATUS)
    R<Boolean> updateStrategyStatus(@RequestParam List<Long> userIds);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllcodeController.java
@@ -19,7 +19,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.service.ICodeAllcodeService;
import com.vci.ubcs.code.service.ICodeAllCodeService;
import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
import com.vci.ubcs.code.wrapper.CodeAllcodeWrapper;
import io.swagger.annotations.Api;
@@ -45,9 +45,9 @@
@AllArgsConstructor
@RequestMapping("blade-code/CodeAllcode")
@Api(value = "全部码值", tags = "全部码值接口")
public class CodeAllcodeController extends BladeController {
public class CodeAllCodeController extends BladeController {
    private final ICodeAllcodeService CodeAllcodeService;
    private final ICodeAllCodeService CodeAllcodeService;
    /**
     * å…¨éƒ¨ç å€¼ è¯¦æƒ…
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,204 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * ç æ®µåŸºç¡€ä¿¡æ¯æŽ§åˆ¶å™¨
 *
 * @author ludc
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeBasicSecController")
public class CodeBasicSecController {
    /**
    * ç æ®µåŸºç¡€ä¿¡æ¯ æœåŠ¡
    */
    @Autowired
    private ICodeBasicSecService codeBasicSecService;
    /**
     * ç¼–码规则 åˆ†é¡µ
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "分页", notes = "传入codeRuleVO")
    public R<IPage<CodeBasicSecVO>> list(CodeBasicSec codeBasicSec, Query query) {
        IPage<CodeBasicSec> pages = codeBasicSecService.page(Condition.getPage(query), Condition.getQueryWrapper(codeBasicSec));
        return R.data(CodeBasicSecWrapper.build().pageVO(pages));
    }
    /**
     * ç æ®µåŸºç¡€ä¿¡æ¯åˆ—表
     * @param codeBasicSecVO åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridCodeBasicSec")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入codeRuleVO")
    public R<IPage<CodeBasicSecVO>> gridCodeBasicSec(CodeBasicSecVO codeBasicSecVO, Query query){
        IPage<CodeBasicSecVO> codeRuleVOIPage = codeBasicSecService.gridCodeBasicSec(Condition.getPage(query.setAscs("ordernum")),codeBasicSecVO);
        return R.data(codeRuleVOIPage);
    }
    /**
     * å¢žåŠ  ç æ®µåŸºç¡€ä¿¡æ¯
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "增加", notes = "codeBasicSecDTO")
    public R addSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
        boolean resBoolean = false;
        try {
            resBoolean = codeBasicSecService.addSave(codeBasicSecDTO);
        } catch (VciBaseException e) {
            return R.fail(e.getCode());
        }
        return R.data(resBoolean);
    }
   /* *//**
     * ä¿®æ”¹ ç æ®µåŸºç¡€ä¿¡æ¯
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     *//*
    @PutMapping("/editSave")
    public R<CodeBasicSecVO> editSave(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
        CodeBasicSecVO codeBasicSecVO = null;
        try {
            codeBasicSecVO = codeBasicSecService.editSave(codeBasicSecDTO);
        } catch (VciBaseException e) {
            return R.fail(e.getCode());
        }
        return R.success(codeBasicSecVO);
    }
    *//**
     * åˆ é™¤ç æ®µåŸºç¡€ä¿¡æ¯
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     *//*
    @DeleteMapping( "/deleteData")
    public R delCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) {
        return codeBasicSecService.deleteCodeBasicSec(codeBasicSecDTO);
    }
    *//**
    * ä¸»é”®èŽ·å–ç æ®µåŸºç¡€ä¿¡æ¯
    * @param oid ä¸»é”®
    * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
    *//*
    @GetMapping("/getObjectByOid")
    public R<CodeBasicSecVO> getObjectByOid(String oid){
        CodeBasicSecVO codeBasicSecVO = codeBasicSecService.getObjectByOid(oid);
        return BaseResult.success(codeBasicSecVO);
    }
    *//**
     * ä¸»é”®æ‰¹é‡èŽ·å–ç æ®µåŸºç¡€ä¿¡æ¯
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡
     *//*
    @GetMapping("/listDataByOids")
    public R<CodeBasicSecVO> listCodeBasicSecByOids(String oids){
        Collection<CodeBasicSecVO> voCollection =  codeBasicSecService.listCodeBasicSecByOids(VciBaseUtil.str2List(oids));
        R baseResult = R.success();
        baseResult.setData(voCollection);
        return  baseResult;
    }
    *//**
     * å‚照码段基础信息列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ç æ®µåŸºç¡€ä¿¡æ¯æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     *//*
    @GetMapping("/refDataGrid")
    public R<IPage<CodeBasicSecVO>> refDataGridCodeBasicSec(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeBasicSecService.refDataGridCodeBasicSec(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    *//**
     * å‚数分类码段基础信息列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等,必须要有编码规则的主键 pkCodeRule
     * @return ç æ®µçš„信息
     *//*
    @GetMapping("/refDataGridClassifySec")
    public R<IPage<CodeBasicSecVO>> refDataGridClassifySec(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeBasicSecService.refDataGridClassifySec(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    *//**
     * å…‹éš†ç æ®µä¿¡æ¯
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象,oidArr:选择源码段主键的集合,pkCodeRule:目标编码规则的主键
     * @return å…‹éš†ç»“果反馈::success:成功,fail:失败
     *//*
    @PostMapping("/clone")
    public R cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
        VciBaseUtil.alertNotNull(codeBasicSecDTO.getOidArr(),"选择码段主键");
        List<String> oidArr = VciBaseUtil.str2List(codeBasicSecDTO.getOidArr());
        if (CollectionUtils.isEmpty(oidArr)){
            return R.fail("选择码段主键不能为空");
        }
        return codeBasicSecService.cloneCodeBasicSec(oidArr,codeBasicSecDTO.getPkCodeRule());
    }
    *//**
     * æŸ¥è¯¢ç›®æ ‡åˆ†ç±»ç æ®µæ‰€åœ¨çš„æ ‘结构
     * @param oid ç›®æ ‡åˆ†ç±»ç æ®µä¸»é”®
     * @return åˆ†ç±»ç æ®µæ ‘结构
     *//*
    @GetMapping("/treeCodeClassifySec")
    public List<Tree> gridCodeClassifySecTree (String oid){
        VciBaseUtil.alertNotNull(oid,"分类码段主键");
        return codeBasicSecService.gridCodeClassifySecTree(oid);
    }
    *//**
     * ä¸Šç§»
     * @param oid ä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     *//*
    @PostMapping("/upOrderNum")
    public R upOrderNum(String oid){
        codeBasicSecService.upOrderNum(oid);
        return R.success();
    }
    *//**
     * ä¸‹ç§»
     * @param oid ä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     *//*
    @PostMapping("/downOrderNum")
    public R downOrderNum(String oid){
        codeBasicSecService.downOrderNum(oid);
        return R.success();
    }*/
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
@@ -21,8 +21,10 @@
import com.vci.ubcs.code.dto.CodeRuleDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@@ -30,9 +32,12 @@
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Collection;
import java.util.Map;
/**
 * ç¼–码规则 æŽ§åˆ¶å™¨
@@ -58,6 +63,7 @@
        CodeRule detail = codeRuleService.getOne(Condition.getQueryWrapper(codeRule));
        return R.data(CodeRuleWrapper.build().entityVO(detail));
    }
    /**
     * ç¼–码规则 åˆ†é¡µ
     */
@@ -75,8 +81,8 @@
    @GetMapping("/gridCodeRule")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入CodeRule")
    public R<IPage<CodeRuleVO>> page(CodeRuleVO CodeRule, Query query) {
        IPage<CodeRuleVO> pages = codeRuleService.selectPlCodeRulePage(Condition.getPage(query.setDescs("CREATETIME")), CodeRule);
    public R<IPage<CodeRuleVO>> gridCodeRule(CodeRuleVO CodeRule, Query query) {
        IPage<CodeRuleVO> pages = codeRuleService.gridCodeRule(Condition.getPage(query.setDescs("CREATETIME")), CodeRule);
        return R.data(pages);
    }
@@ -105,23 +111,108 @@
    }
    /**
     * ç¼–码规则 æ–°å¢žæˆ–修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入CodeRule")
    public R submit(@Valid @RequestBody CodeRule codeRule) {
        return R.status(codeRuleService.saveOrUpdate(codeRule));
    }
    /**
     * åˆ é™¤ä¸»æ•°æ®ç¼–码规则
     * @param codeRuleDTO ä¸»æ•°æ®ç¼–码规则数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "删除", notes = "传入codeRuleDTO")
    public R delCodeRule(@Valid @RequestBody CodeRuleDTO codeRuleDTO) {
        return codeRuleService.deleteCodeRule(codeRuleDTO);
    }
    /**
     * ä¸»é”®èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     * @param oid ä¸»é”®
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    @GetMapping("/getObjectByOid")
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "主键获取主数据编码规则", notes = "传入oid")
    public R<CodeRuleVO> getObjectByOid(@Valid @RequestParam String oid){
        CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(oid);
        return R.data(codeRuleVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    @GetMapping("/listDataByOids")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "主键批量获取主数据编码规则", notes = "传入oids")
    public R<Collection<CodeRuleVO>> listCodeRuleByOids(@Valid @RequestParam String oids){
        Collection<CodeRuleVO> voCollection =  codeRuleService.listCodeRuleByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照主数据编码规则列表
     * @param CodeRule
     * @param query
     * @return ä¸»æ•°æ®ç¼–码规则显示对象列表,生效的内容
     */
    @GetMapping("/refDataGrid")
    @ApiOperationSupport(order = 10)
    @ApiOperation(value = "参照主数据编码规则列表", notes = "传入oids")
    public R<IPage<CodeRuleVO>> refDataGridCodeRule(CodeRuleVO CodeRule, Query query){
        return R.data(codeRuleService.refDataGridCodeRule(Condition.getPage(query),CodeRule));
    }
    /**
     * æŸ¥çœ‹ä¸»æ•°æ®ç¼–码规则的使用范围
     * @param oid ä¸»é”®
     * @return ä½¿ç”¨èŒƒå›´
     */
    @GetMapping("/listUseRange")
    @ApiOperationSupport(order = 11)
    @ApiOperation(value = "查看主数据编码规则的使用范围", notes = "传入oid")
    public R<Collection<CodeClassifyVO>> listUseRange(@Valid @RequestParam String oid){
        Collection<CodeClassifyVO> voList = codeRuleService.listUseRangeInCodeClassify(oid);
        return R.data(voList);
    }
    /**
     * åœç”¨ä¸Žå¯ç”¨ç¼–码规则
     * @param map å°è£…参数,包括oid ç¼–码规则主键 update æ›´æ–°çŠ¶æ€çš„æ“ä½œ
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping ("/updateStatus")
    @ApiOperationSupport(order = 12)
    @ApiOperation(value = "停用与启用编码规则", notes = "传入map")
    public R updateStatus(@Valid @RequestBody Map<String,String> map){
        if (CollectionUtils.isEmpty(map)){
            return R.fail("参数错误");
        }
        String oid = map.get("oid");
        String update = map.get("update");
        return codeRuleService.updateStatus(oid,update);
    }
    /**
     * å…‹éš†ç¼–码规则
     * @param codeRuleDTO ä¸»æ•°æ®ç¼–码规则数据传输对象,oid和ts需要传输
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    @PostMapping("/clone")
    @ApiOperationSupport(order = 13)
    @ApiOperation(value = "克隆编码规则", notes = "传入codeRuleDTO")
    public R cloneCodeRule(@RequestBody CodeRuleDTO codeRuleDTO){
        return codeRuleService.cloneCodeRule(codeRuleDTO);
    }
    /**
     * ç¼–码规则清空所有已生成的编码
     * @param oid ç¼–码规则主键
     * @return æ‰§è¡Œç»“æžœ
     */
    @DeleteMapping("/clearAllCode")
    @ApiOperationSupport(order = 14)
    @ApiOperation(value = "编码规则清空所有已生成的编码", notes = "传入oid")
    public R clearAllCode(String oid){
        return codeRuleService.clearAllCode(oid);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeSecTypeEnum.java
@@ -1,6 +1,6 @@
package com.vci.ubcs.code.enumpack;
import com.vci.ubcs.code.annotation.BaseEnum;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.code.constant.MdmEnumIdConstant;
import com.vci.ubcs.com.vci.starter.annotation.VciEnum;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/lifecycle/CodeRuleLC.java
@@ -1,7 +1,7 @@
package com.vci.ubcs.code.lifecycle;
import com.vci.ubcs.code.annotation.BaseEnum;
import com.vci.ubcs.com.vci.starter.web.enumpck.BaseEnum;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
/**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeBasicSecMapper.java
@@ -3,7 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@@ -20,11 +21,11 @@
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param plCodeRule
     * @param codeBasicSecVO
     * @return
     */
    List<CodeRuleVO> selectPlCodeRulePage(IPage page, CodeRuleVO plCodeRule);
    List<CodeBasicSec> selectCodeBasicSecPage(IPage page, @Param("codeBasicSec") CodeBasicSecVO codeBasicSecVO);
    List<CodeBasicSec> countByCondition(Map<String,String> condtions);
    Long countByCondition(@Param("conditionMap") Map<String,String> conditionMap);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -1,19 +1,3 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeClassify;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import java.util.List;
/**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
import java.util.List;
/**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSerialValueMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeSerialValue;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * æµæ°´çš„值数据操作层
 *
 * @author ludc
 * @date 2022-03-01
 */
public interface CodeSerialValueMapper {
    List<CodeSerialValue> selectByCodeRoleId(@Param("codeRuleOid") String codeRuleOid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeSynonymEntity;
import com.vci.ubcs.code.vo.CodeSynonymVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeSynonymEntity;
import com.vci.ubcs.code.vo.CodeSynonymVO;
import java.util.List;
/**
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.vci.ubcs.code.mapper;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
 * å…¬å…±æŸ¥è©¢mapper
 *
 * @author ludc
 * @date 2022-01-24
 */
public interface CommonsMapper {
    @MapKey("count")
    Map<String,String> selectByCount(@Param("tableName") String tableName,@Param("oid") String oid,@Param("btm") String btm);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeAllcodeService.java
@@ -30,7 +30,7 @@
 * @author ludc
 * @since 2023-04-03
 */
public interface ICodeAllcodeService extends IService<CodeAllCode> {
public interface ICodeAllCodeService extends IService<CodeAllCode> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
@@ -1,7 +1,12 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
/**
 * å›ºå®šç æ®µçš„码值服务接口
@@ -12,10 +17,36 @@
public interface ICodeBasicSecService extends IService<CodeBasicSec> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„码段基础信息
     * @param codeBasicSecVO æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<CodeBasicSecVO> gridCodeBasicSec(IPage<CodeBasicSecVO> page, CodeBasicSecVO codeBasicSecVO) throws VciBaseException;
    /**
     * æ ¹æ®ç¼–码规则批量删除码段基本信息
     * @param codeRuleOid ç¼–码规则主键
     * @return æ‰§è¡Œç»“æžœ
     */
    boolean batchDeleteSecByCodeRuleOid(String codeRuleOid);
    /**
     * æ ¹æ®ç æ®µåˆ†ç±»çš„类型判断属性是否是空的
     *
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æœ‰ç©ºçš„则传key-属性名 value-字段含义,没有空的则传 key-success value-true
     */
    KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO);
    /**
     * å¢žåŠ ç æ®µåŸºç¡€ä¿¡æ¯
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    boolean addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java
@@ -17,7 +17,6 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.vo.CodeButtonVO;
import org.springblade.core.tool.api.R;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
@@ -16,12 +16,10 @@
 */
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * ç¼–码库定义-模板管理 æœåŠ¡ç±»
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java
@@ -16,10 +16,8 @@
 */
package com.vci.ubcs.code.service;
import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
/**
 * å…³é”®å±žæ€§æŸ¥é‡è§„则 æœåŠ¡ç±»
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java
@@ -20,9 +20,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.CodeRuleDTO;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.Collection;
@@ -39,10 +39,10 @@
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param plCodeRule
     * @param codeRule
     * @return
     */
    IPage<CodeRuleVO> selectPlCodeRulePage(IPage<CodeRuleVO> page, CodeRuleVO plCodeRule);
    IPage<CodeRuleVO> gridCodeRule(IPage<CodeRuleVO> page, CodeRuleVO codeRule);
    /**
     * æ ¡éªŒç¼–码规则的状态是否可以编辑或删除
@@ -87,4 +87,51 @@
     */
    Collection<CodeClassifyVO> listUseRangeInCodeClassify(String oid);
    /**
     * ä¸»é”®èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     * @param oid ä¸»é”®
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    CodeRuleVO getObjectByOid(String oid) throws VciBaseException;
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * å‚照主数据编码规则列表
     * @param codeRule æŸ¥è¯¢æ¡ä»¶
     * @param page åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»æ•°æ®ç¼–码规则显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<CodeRuleVO> refDataGridCodeRule(IPage<CodeRuleVO> page, CodeRuleVO codeRule) throws VciBaseException;
    /**
     * åœç”¨ä¸Žå¯ç”¨ç¼–码规则
     * @param oid ç¼–码规则主键
     * @param update enable:启用 disable:停用 release:发布
     * @return æ‰§è¡Œç»“æžœ
     */
    R updateStatus(String oid, String update);
    /**
     * å…‹éš†ç¼–码规则
     * @param codeRuleDTO ä¸»æ•°æ®ç¼–码规则数据传输对象,oid和ts需要传输
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    R cloneCodeRule(CodeRuleDTO codeRuleDTO);
    /**
     * ç¼–码规则清空所有已生成的编码
     * @param oid ç¼–码规则主键
     * @return æ‰§è¡Œç»“æžœ
     */
    R clearAllCode(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
@@ -16,10 +16,8 @@
 */
package com.vci.ubcs.code.service;
import com.vci.ubcs.code.entity.CodeSynonymEntity;
import com.vci.ubcs.code.vo.CodeSynonymVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.CodeSynonymVO;
/**
 * è¿‘义词维护 æœåŠ¡ç±»
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeAllCodeAllCodeServiceImpl.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeAllcodeServiceImpl.java ÐÞ¸Ä
@@ -21,7 +21,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.mapper.CodeAllCodeMapper;
import com.vci.ubcs.code.service.ICodeAllcodeService;
import com.vci.ubcs.code.service.ICodeAllCodeService;
import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
import org.springframework.stereotype.Service;
@@ -35,7 +35,7 @@
 * @since 2023-04-03
 */
@Service
public class CodeAllcodeServiceImpl extends ServiceImpl<CodeAllCodeMapper, CodeAllCode> implements ICodeAllcodeService {
public class CodeAllCodeAllCodeServiceImpl extends ServiceImpl<CodeAllCodeMapper, CodeAllCode> implements ICodeAllCodeService {
    /**
     * æ•°æ®æ“ä½œå¯¹è±¡
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -1,22 +1,42 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.lifecycle.CodeRuleLC;
import com.vci.ubcs.code.mapper.CodeBasicSecMapper;
import com.vci.ubcs.code.mapper.CodeClassifyValueMapper;
import com.vci.ubcs.code.mapper.CodeFixedValueMapper;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.web.enumpck.OsCodeFillTypeEnum;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.com.vci.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.com.vci.starter.web.pagemodel.UIFormReferVO;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.WebUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -43,6 +63,27 @@
     */
    @Resource
    private CodeClassifyValueMapper codeClassifyValueMapper;
    @Resource
    @Lazy
    private ICodeRuleService codeRuleService;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„码段基础信息
     *
     * @param page æŸ¥è¯¢æ¡ä»¶
     * @param codeBasicSecVO   åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeBasicSecVO> gridCodeBasicSec(IPage<CodeBasicSecVO> page, CodeBasicSecVO codeBasicSecVO) throws VciBaseException {
        if(Func.isEmpty(codeBasicSecVO.getPkCodeRule()) || Func.isBlank(codeBasicSecVO.getPkCodeRule())){
            return null;
        }
        List<CodeBasicSec> codeBasicSecs = codeBasicSecMapper.selectCodeBasicSecPage(page, codeBasicSecVO);
        return page.setRecords(CodeBasicSecWrapper.build().listVO(codeBasicSecs));
    }
    /**
     * æ ¹æ®ç¼–码规则批量删除码段基本信息
@@ -87,5 +128,135 @@
        return deletFlag;
    }
    /**
     * æ ¹æ®ç æ®µåˆ†ç±»çš„类型判断属性是否是空的
     *
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æœ‰ç©ºçš„则传key-属性名 value-字段含义,没有空的则传 key-success value-true
     */
    @Override
    public KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO) {
        VciBaseUtil.alertNotNull(codeBasicSecDTO.getSectype(), "码段分类");
        String secType = codeBasicSecDTO.getSectype();
        HashMap<String, String> attrMap = JSONObject.parseObject(JSONObject.toJSONString(codeBasicSecDTO), HashMap.class);
        Map<String, String> notNullableAttr = getNotNullableAttr(secType);
        if (notNullableAttr == null) {
            throw new VciBaseException("码段分类填写出错,请查验后重试");
        }
        for (String key : notNullableAttr.keySet()) {
            if (StringUtils.isBlank(WebUtil.getStringValueFromObject(attrMap.get(key)))) {
                KeyValue kv = new KeyValue();
                kv.setKey(key);
                kv.setValue(notNullableAttr.get(key));
                return kv;
            }
        }
        KeyValue kv = new KeyValue();
        kv.setKey("success");
        kv.setValue("true");
        return kv;
    }
    /**
     * å¢žåŠ ç æ®µåŸºç¡€ä¿¡æ¯
     *
     * @param codeBasicSecDTO ç æ®µåŸºç¡€ä¿¡æ¯æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    public boolean addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
        VciBaseUtil.alertNotNull(codeBasicSecDTO, "需要添加的数据对象",codeBasicSecDTO.getPkCodeRule(),"编码规则的主键");
        CodeRuleVO ruleVO = codeRuleService.getObjectByOid(codeBasicSecDTO.getPkCodeRule());
        if(!CodeRuleLC.EDITING.getValue().equalsIgnoreCase(ruleVO.getLcStatus())){
            throw new VciBaseException("编码规则的状态不是【" + CodeRuleLC.EDITING.getText() + "】!不允许修改");
        }
        KeyValue attrKv = checkAttrNullableBySecType(codeBasicSecDTO);
        if (! "success".equals(attrKv.getKey())){
            throw new VciBaseException(attrKv.getValue() + "不能为空");
        }
        //将DTO转换为DO
        CodeBasicSec codeBasicSecDO = new CodeBasicSec();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
        //排序号,默认等于当前已有的数量加1
        Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query()
            .lambda()
            .eq(CodeBasicSec::getPkCodeRule,codeBasicSecDTO.getPkCodeRule()));
        if(total == null){
            total = 0L;
        }
        codeBasicSecDO.setOrderNum(total.intValue() + 1);
        //补位的时候,要控制补位字符
        if((OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType())
            || OsCodeFillTypeEnum.RIGHT.getValue().equalsIgnoreCase(codeBasicSecDO.getCodeFillType()))
            && StringUtils.isBlank(codeBasicSecDO.getCodeFillSeparator())){
            throw new VciBaseException("当补位方式为左补位或者右补位的时候,补位字符不能为空");
        }
        //引用码段的时候,需要判断参照的信息是否正确
        if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
            if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
                throw new VciBaseException("引用码段的时候,需要填写 å‚照配置 çš„内容");
            }
            try{
                JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
            }catch (Throwable e){
                throw new VciBaseException("引用码段的时候,参照配置的内容的格式不正确,",new String[0],e);
            }
        }
        boolean resBoolean = codeBasicSecMapper.insert(codeBasicSecDO) > 0;
        SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
        /*if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
            charService.save(MdmBtmTypeConstant.CODE_BASIC_SEC,"codefileseparator",codeBasicSecDO.getCodeFillSeparator(),sessionInfo);
        }*/
        return resBoolean;
    }
    /**
     * æ ¹æ®ç æ®µç±»åž‹èŽ·å–ä¸å¯ä¸ºç©ºçš„å­—æ®µ
     *
     * @param secType ç æ®µç±»åž‹
     * @return ä¸å¯ä¸ºç©ºçš„字段集合
     */
    private Map<String, String> getNotNullableAttr(String secType) {
        Map<String, String> attrMap = new HashMap<>();
        if (CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "属性码段名称");
        } else if (CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "日期码段名称");
            attrMap.put("codeDateFormatStr", "日期格式");
        } else if (CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "固定码段名称");
            attrMap.put("codeSecLengthType", "码段长度类型");
            attrMap.put("codeSecLength", "码段的长度");
        } else if (CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "层级码段名称");
            attrMap.put("codeLevelType", "层级类型");
            attrMap.put("valueCutType", "字符截取类型");
        } else if (CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "引用码段名称");
        } else if (CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "流水码段名称");
            attrMap.put("codeSecLength", "码段的长度");
            attrMap.put("codeFillType", "编码补位方式");
            attrMap.put("codeFillLength", "填充长度");
            attrMap.put("codeFillLimit", "流水上限");
            attrMap.put("codeFillFlag", "流水是否补码");
        } else if (CodeSecTypeEnum.CODE_VARIABLE_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "可变码段名称");
            attrMap.put("codeSecLength", "码段的长度");
            attrMap.put("codeFillType", "编码补位方式");
        } else if (CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue().equalsIgnoreCase(secType)) {
            attrMap.put("name", "分类码段名称");
            attrMap.put("codeSecLengthType", "码段长度类型");
            attrMap.put("codeSecLength", "码段的长度");
        } else {
            attrMap = null;
        }
        return attrMap;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java ÐÞ¸Ä
@@ -14,36 +14,28 @@
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.core.log.exception.ServiceException;
import jodd.bean.BeanUtil;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@Service
public class ICodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService {
public class CodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService {
    @Resource
    private CodeClassifyMapper codeClassifyMapper;
@@ -428,7 +420,6 @@
        }
        return tree;
    }
//    /**
//     * æ ¹æ®æ ‘形查询对象来查询数据对象
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -16,14 +16,13 @@
 */
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
import com.vci.ubcs.code.service.ICodeClstemplateService;
import org.springblade.core.mp.base.BaseServiceImpl;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * ç¼–码库定义-模板管理 æœåŠ¡å®žçŽ°ç±»
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
@@ -16,15 +16,12 @@
 */
package com.vci.ubcs.code.service.impl;
import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
import com.vci.ubcs.code.mapper.CodeButtonMapper;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
import org.springblade.core.mp.base.BaseServiceImpl;
import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * å…³é”®å±žæ€§æŸ¥é‡è§„则 æœåŠ¡å®žçŽ°ç±»
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -17,16 +17,18 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.dto.CodeRuleDTO;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeRule;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.lifecycle.CodeRuleLC;
import com.vci.ubcs.code.mapper.CodeRuleMapper;
import com.vci.ubcs.code.service.ICodeAllcodeService;
import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.ICodeAllCodeService;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeRuleService;
@@ -36,19 +38,21 @@
import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
import com.vci.ubcs.com.vci.starter.web.util.WebUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -68,13 +72,19 @@
     */
    @Resource
    private CodeRuleMapper codeRuleMapper;
    @Resource
    private CommonsMapper commonsMapper;
    @Resource
    private CodeSerialValueMapper codeSerialValueMapper;
    /**
     * å…¶ä»–服务层
     */
    @Resource
    @Lazy
    private ICodeClassifyService codeClassifyServcie;
    @Resource
    private ICodeAllcodeService codeAllcodeService;
    private ICodeAllCodeService codeAllcodeService;
    @Resource
    private ICodeBasicSecService codeBasicSecService;
@@ -85,7 +95,7 @@
    private RevisionModelUtil revisionModelUtil;
    @Override
    public IPage<CodeRuleVO> selectPlCodeRulePage(IPage<CodeRuleVO> page, CodeRuleVO codeRule) {
    public IPage<CodeRuleVO> gridCodeRule(IPage<CodeRuleVO> page, CodeRuleVO codeRule) {
        //对生命周期的枚举进行转换
        if(!StringUtils.isEmpty(codeRule.getLcStatusText())){
            codeRule.setLcStatus(CodeRuleLC.getValueByText(codeRule.getLcStatusText()));
@@ -183,16 +193,62 @@
            }
        }
        List<CodeAllCode> codeDOList = codeAllcodeService.selectByWrapper(Wrappers.<CodeAllCode>query().eq("codeRuleOid", codeRuleDTO.getOid()));
        List<CodeAllCode> codeDOList = codeAllcodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, codeRuleDTO.getOid()));
        if (!CollectionUtils.isEmpty(codeDOList)) {
            return R.fail("编码规则已生成编码,不允许删除");
        }
        //执行删除操作
        //WebUtil.setPersistence(false);
        boolean resBoolean = codeBasicSecService.batchDeleteSecByCodeRuleOid(codeRule.getOid());
        resBoolean = codeRuleMapper.deleteById(codeRule.getOid())>0;
        boolean resBoolean1 = codeRuleMapper.deleteById(codeRule.getOid()) > 0;
        //WebUtil.setPersistence(true);
        return R.status(resBoolean);
        return R.status(resBoolean&&resBoolean1);
    }
    /**
     * ç¼–码规则清空所有已生成的编码
     *
     * @param oid ç¼–码规则主键
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R clearAllCode(String oid) {
        WebUtil.alertNotNull(oid, "编码规则主键");
        List<CodeAllCode> codeDOList = codeAllcodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCodeRuleOid, oid));
        if (CollectionUtils.isEmpty(codeDOList)) {
            return R.fail("当前编码规则没有生成编码,无需清空");
        }
        //是否需要进行btm不统一的判断?
        String btmType = codeDOList.get(0).getCreateCodeBtm();
        //多种类型下的查询
        Set<String> btmTypeSet = codeDOList.stream().filter(s -> {
            return !btmType.equalsIgnoreCase(s.getCreateCodeBtm());
        }).map(s -> s.getCreateCodeBtm()).collect(Collectors.toSet());
        List<Map<String,String>> businessDataList = new ArrayList<>();
        if (btmTypeSet.size() > 1) {
            for (String btm : btmTypeSet) {
                Map<String,String> businessData = commonsMapper.selectByCount("PL_CODE_"+btm,oid,btm);
                businessDataList.add(businessData);
            }
        }else {
            Map<String,String> businessData = commonsMapper.selectByCount("PL_CODE_"+btmType,oid,btmType);
            businessDataList.add(businessData);
        }
        if (CollectionUtils.isEmpty(businessDataList) || StringUtils.isBlank(businessDataList.get(0).get("count"))) {
            //无效查询
            return R.fail("查询失败");
        } else if (!"0".equalsIgnoreCase(businessDataList.get(0).get("count"))) {
            return R.fail("编码规则生成的编码已在业务数据中应用,不允许清空");
        }
        //没有数据,可以安全删除
        WebUtil.setPersistence(false);
        //删除码值表中的数据,但不够,如果有流水的码段,需要重新计算流水
        List<CodeSerialValue> serialValueList = codeSerialValueMapper.selectByCodeRoleId(oid);
        /*BatchCBO batchCBO = boService.batchDelete(codeDOList);
        batchCBO.getDeleteCbos().addAll(serialValueList);
        WebUtil.setPersistence(true);
        boService.persistenceBatch(batchCBO);*/
        return R.success("清空码值成功!");
    }
    /**
@@ -239,4 +295,138 @@
        return CodeClassifyWrapper.build().listVO(codeClassifies);
    }
    /**
     * ä¸»é”®èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     *
     * @param oid ä¸»é”®
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public CodeRuleVO getObjectByOid(String oid) throws VciBaseException {
        CodeRule codeRule = selectByOid(oid);
        return CodeRuleWrapper.build().entityVO(codeRule);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»æ•°æ®ç¼–ç è§„åˆ™
     *
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeRuleVO> listCodeRuleByOids(Collection<String> oidCollections) throws VciBaseException {
        VciBaseUtil.alertNotNull(oidCollections, "数据对象主键集合");
        List<CodeRule> codeRuleDOList = listCodeRuleDOByOidCollections(oidCollections);
        return CodeRuleWrapper.build().listVO(codeRuleDOList);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     *
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeRule> listCodeRuleDOByOidCollections(Collection<String> oidCollections) {
        List<CodeRule> codeRuleDOList = new ArrayList<CodeRule>();
        if (!CollectionUtils.isEmpty(oidCollections)) {
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for (Collection<String> oids : oidCollectionsList) {
                List<CodeRule> tempDOList = codeRuleMapper.selectBatchIds(oids);
                if (!CollectionUtils.isEmpty(tempDOList)) {
                    codeRuleDOList.addAll(tempDOList);
                }
            }
        }
        return codeRuleDOList;
    }
    /**
     * å‚照主数据编码规则列表
     *
     * @param codeRule æŸ¥è¯¢æ¡ä»¶
     * @param page   åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»æ•°æ®ç¼–码规则显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeRuleVO> refDataGridCodeRule(IPage<CodeRuleVO> page, CodeRuleVO codeRule) throws VciBaseException {
        return gridCodeRule(page, codeRule);
    }
    /**
     * åœç”¨ä¸Žå¯ç”¨ç¼–码规则
     *
     * @param oid    ç¼–码规则主键
     * @param update enable:启用 disable:停用 release:发布
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public R updateStatus(String oid, String update) {
        int count = 0;
        //先查询对象
        CodeRule codeRuleDO = selectByOid(oid);
        //创建修改对象的的wrapper条件
        LambdaUpdateWrapper<CodeRule> wrapper = Wrappers.<CodeRule>update()
            .lambda()
            .eq(CodeRule::getOid, oid);
        if ("enable".equalsIgnoreCase(update)) {
            if (!CodeRuleLC.DISABLED.getValue().equals(codeRuleDO.getLcStatus())) {
                return R.fail("非停用状态的编码规则无需点击启用");
            }
            count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()));
        } else if ("disable".equalsIgnoreCase(update)) {
            if (!CodeRuleLC.RELEASED.getValue().equals(codeRuleDO.getLcStatus())) {
                return R.fail("非发布状态的编码规则无法停用");
            }
            count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.DISABLED.getValue()));
        } else if ("release".equalsIgnoreCase(update)) {
            if (!CodeRuleLC.EDITING.getValue().equals(codeRuleDO.getLcStatus())) {
                return R.fail("非编辑状态的编码规则无法发布");
            }
            count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()));
        } else {
            return R.fail("暂不支持的操作类型");
        }
        if (count > 0) {
            return R.success("更新状态成功");
        } else {
            return R.fail("更新状态失败");
        }
    }
    /**
     * å…‹éš†ç¼–码规则
     *
     * @param codeRuleDTO ä¸»æ•°æ®ç¼–码规则数据传输对象,oid和ts需要传输
     * @return ä¸»æ•°æ®ç¼–码规则显示对象
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R cloneCodeRule(CodeRuleDTO codeRuleDTO) {
        VciBaseUtil.alertNotNull(codeRuleDTO, "需要添加的数据对象");
        CodeRule codeRuleDO = new CodeRule();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO);
        boolean exFlag = codeRuleMapper.insert(codeRuleDO)>0;
        List<CodeBasicSecDTO> secList = codeRuleDTO.getElements();
        List<CodeBasicSec> codeBasicSecs = new ArrayList<>();
        secList.forEach(codeBasicSecDTO -> {
            codeBasicSecDTO.setPkCodeRule(codeRuleDO.getOid());
            KeyValue attrKv = codeBasicSecService.checkAttrNullableBySecType(codeBasicSecDTO);
            if (!"success".equals(attrKv.getKey())) {
                throw new VciBaseException(attrKv.getValue() + "不能为空");
            }
            CodeBasicSec codeBasicSecDO = new CodeBasicSec();
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
            codeBasicSecDO.setOid("");
            codeBasicSecDO.setRevisionOid("");
            codeBasicSecDO.setNameOid("");
            codeBasicSecs.add(codeBasicSecDO);
        });
        boolean exFlag1 = this.codeBasicSecService.saveBatch(codeBasicSecs);
        return R.data(exFlag&&exFlag1);
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
@@ -16,11 +16,11 @@
 */
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.mapper.CodeSynonymMapper;
import com.vci.ubcs.code.service.ICodeSynonymService;
import com.vci.ubcs.code.vo.CodeSynonymVO;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.annotation.Resource;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.vci.ubcs.code.wrapper;
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * å…¨éƒ¨ç å€¼ åŒ…装类,返回视图层所需的字段
 *
 * @author ludc
 * @since 2023-04-03
 */
public class CodeBasicSecWrapper extends BaseEntityWrapper<CodeBasicSec, CodeBasicSecVO>  {
    public static CodeBasicSecWrapper build() {
        return new CodeBasicSecWrapper();
    }
    @Override
    public CodeBasicSecVO entityVO(CodeBasicSec codeBasicSec) {
        CodeBasicSecVO codeBasicSecVO = Objects.requireNonNull(BeanUtil.copy(codeBasicSec, CodeBasicSecVO.class));
        //User createUser = UserCache.getUser(CodeAllCode.getCreateUser());
        //User updateUser = UserCache.getUser(CodeAllCode.getUpdateUser());
        //CodeAllCodeVO.setCreateUserName(createUser.getName());
        //CodeAllCodeVO.setUpdateUserName(updateUser.getName());
        return codeBasicSecVO;
    }
    @Override
    public List<CodeBasicSecVO> listVO(List<CodeBasicSec> list) {
        return (List)list.stream().map(this::entityVO).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -8,12 +8,86 @@
    </resultMap>
    <select id="selectPlCodeRulePage" resultMap="CodeRuleResultMap">
        select * from PL_CODE_RULE where is_deleted = 0
    <select id="selectCodeBasicSecPage" resultMap="CodeRuleResultMap">
        select PL_CODE_BASICSEC.oid,
               PL_CODE_BASICSEC.revisionoid,
               PL_CODE_BASICSEC.nameoid,
               PL_CODE_BASICSEC.btmname,
               PL_CODE_BASICSEC.lastr,
               PL_CODE_BASICSEC.firstr,
               PL_CODE_BASICSEC.lastv,
               PL_CODE_BASICSEC.firstv,
               PL_CODE_BASICSEC.creator,
               PL_CODE_BASICSEC.createtime,
               PL_CODE_BASICSEC.lastmodifier,
               PL_CODE_BASICSEC.lastmodifytime,
               PL_CODE_BASICSEC.revisionrule,
               PL_CODE_BASICSEC.versionrule,
               PL_CODE_BASICSEC.revisionseq,
               PL_CODE_BASICSEC.revisionvalue,
               PL_CODE_BASICSEC.versionseq,
               PL_CODE_BASICSEC.versionvalue,
               PL_CODE_BASICSEC.lctid,
               PL_CODE_BASICSEC.lcstatus,
               PL_CODE_BASICSEC.ts,
               PL_CODE_BASICSEC.id,
               PL_CODE_BASICSEC.name,
               PL_CODE_BASICSEC.description,
               PL_CODE_BASICSEC.owner,
               PL_CODE_BASICSEC.copyfromversion,
               PL_CODE_BASICSEC.codefillseparator,
               PL_CODE_BASICSEC.codeseclength,
               PL_CODE_BASICSEC.valuecuttype,
               PL_CODE_BASICSEC.codefilltype,
               PL_CODE_BASICSEC.refervalueinfo,
               PL_CODE_BASICSEC.referattributeid,
               PL_CODE_BASICSEC.getvalueclass,
               PL_CODE_BASICSEC.displayflag,
               PL_CODE_BASICSEC.parentclassifysecoid,
               PL_CODE_BASICSEC.serialstep,
               PL_CODE_BASICSEC.serialdependflag,
               PL_CODE_BASICSEC.filtersql,
               PL_CODE_BASICSEC.codedateformatstr,
               PL_CODE_BASICSEC.refercodeclassifyoid,
               PL_CODE_BASICSEC.codeleveltype,
               PL_CODE_BASICSEC.codeseclengthtype,
               PL_CODE_BASICSEC.referattributename,
               PL_CODE_BASICSEC.referbtmname,
               PL_CODE_BASICSEC.codefillflag,
               PL_CODE_BASICSEC.valuecutlength,
               PL_CODE_BASICSEC.codegetvaluetype,
               PL_CODE_BASICSEC.referbtmid,
               PL_CODE_BASICSEC.codefilltypetext,
               PL_CODE_BASICSEC.codelevelvalue,
               PL_CODE_BASICSEC.codefilllength,
               PL_CODE_BASICSEC.customcodeserialclass,
               PL_CODE_BASICSEC.matchclassifyvalueflag,
               PL_CODE_BASICSEC.sectype,
               PL_CODE_BASICSEC.pkcoderule,
               PL_CODE_BASICSEC.ordernum,
               PL_CODE_BASICSEC.referconfig,
               PL_CODE_BASICSEC.serialstart,
               PL_CODE_BASICSEC.componentcodeflag,
               PL_CODE_BASICSEC.serialdependorder,
               PL_CODE_BASICSEC.nullableflag,
               PL_CODE_BASICSEC.codefilllimit,
               btm_codebasicsec_1.name       as b__name,
               platformbtm_codeclassify.name as c__name,
               COUNT(*) OVER () "##VCI_COUNT_VCI##"
        from PL_CODE_BASICSEC
                 left join PL_CODE_BASICSEC btm_codebasicsec_1
                           on btm_codebasicsec_1.oid = PL_CODE_BASICSEC.parentclassifysecoid
                 left join PL_CODE_BASICSEC platformbtm_codeclassify
                           on platformbtm_codeclassify.oid = PL_CODE_BASICSEC.refercodeclassifyoid
        where
          and PL_CODE_BASICSEC.pkcoderule = #{codeBasicSec.pkCodeRule}
    </select>
    <select id="countByCondition" resultType="com.vci.ubcs.code.entity.CodeBasicSec">
    <select id="countByCondition" resultType="java.lang.Long">
    </select>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSerialValueMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeSerialValueMapper">
    <resultMap id="codeSerialValueMap" type="com.vci.ubcs.code.entity.CodeSerialValue">
        <id property="oid" column="OID"/>
        <result property="revisionOid" column="REVISIONOID"/>
        <result property="nameOid" column="NAMEOID"/>
        <result property="btmname" column="BTMNAME"/>
        <result property="lastR" column="LASTR"/>
        <result property="firstR" column="FIRSTR"/>
        <result property="lastV" column="LASTV"/>
        <result property="firstV" column="FIRSTV"/>
        <result property="creator" column="CREATOR"/>
        <result property="createTime" column="CREATETIME"/>
        <result property="lastModifier" column="LASTMODIFIER"/>
        <result property="lastModifyTime" column="LASTMODIFYTIME"/>
        <result property="revisionRule" column="REVISIONRULE"/>
        <result property="revisionValue" column="REVISIONVALUE"/>
        <result property="versionSeq" column="VERSIONSEQ"/>
        <result property="versionValue" column="VERSIONVALUE"/>
        <result property="lctid" column="LCTID"/>
        <result property="lcStatus" column="LCSTATUS"/>
        <result property="ts" column="TS"/>
        <result property="id" column="ID"/>
        <result property="name" column="NAME"/>
        <result property="description" column="DESCRIPTION"/>
        <result property="owner" column="OWNER"/>
        <result property="copyFromVersion" column="COPYFROMVERSION"/>
        <result property="codeRuleOid" column="coderuleoid"/>
        <result property="serialUnit" column="serialunit"/>
        <result property="codeSecOid" column="codesecoid"/>
        <result property="maxSerial" column="maxserial"/>
    </resultMap>
    <select id="selectByCodeRoleId" resultMap="codeSerialValueMap">
        select PL_CODE_SERIALVALUE.OID,
               PL_CODE_SERIALVALUE.REVISIONOID,
               PL_CODE_SERIALVALUE.NAMEOID,
               PL_CODE_SERIALVALUE.BTMNAME,
               PL_CODE_SERIALVALUE.LASTR,
               PL_CODE_SERIALVALUE.FIRSTR,
               PL_CODE_SERIALVALUE.LASTV,
               PL_CODE_SERIALVALUE.FIRSTV,
               PL_CODE_SERIALVALUE.CREATOR,
               PL_CODE_SERIALVALUE.CREATETIME,
               PL_CODE_SERIALVALUE.LASTMODIFIER,
               PL_CODE_SERIALVALUE.LASTMODIFYTIME,
               PL_CODE_SERIALVALUE.REVISIONRULE,
               PL_CODE_SERIALVALUE.VERSIONRULE,
               PL_CODE_SERIALVALUE.REVISIONSEQ,
               PL_CODE_SERIALVALUE.REVISIONVALUE,
               PL_CODE_SERIALVALUE.VERSIONSEQ,
               PL_CODE_SERIALVALUE.VERSIONVALUE,
               PL_CODE_SERIALVALUE.LCTID,
               PL_CODE_SERIALVALUE.LCSTATUS,
               PL_CODE_SERIALVALUE.TS,
               PL_CODE_SERIALVALUE.ID,
               PL_CODE_SERIALVALUE.NAME,
               PL_CODE_SERIALVALUE.DESCRIPTION,
               PL_CODE_SERIALVALUE.OWNER,
               PL_CODE_SERIALVALUE.COPYFROMVERSION,
               PL_CODE_SERIALVALUE.coderuleoid,
               PL_CODE_SERIALVALUE.serialunit,
               PL_CODE_SERIALVALUE.codesecoid,
               PL_CODE_SERIALVALUE.maxserial,
               COUNT(*) OVER () "##VCI_COUNT_VCI##"
        from PL_CODE_SERIALVALUE
        where 1 = 1
          and PL_CODE_SERIALVALUE.coderuleoid = #{codeRuleOid}
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CommonsMapper">
    <select id="selectByCount" resultType="java.util.Map">
        select COUNT(w.OID) count
        from ${tableName} w
                 join PL_CODE_ALLCODE c on w.OID = c.CREATECODEOID
        where c.CREATECODEBTM = #{btm}
          and c.CODERULEOID = #{oid}
          and w.LASTR = '1'
          and w.LASTV = '1'
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java
@@ -17,11 +17,11 @@
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.service.IDictBizService;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.service.IDictBizService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java
@@ -19,10 +19,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.vo.DictBizMVO;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import java.util.List;
import java.util.Map;
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java
@@ -4,10 +4,13 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.common.constant.CommonConstant;
import com.vci.ubcs.omd.cache.DictBizCache;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.mapper.DictBizMapper;
import com.vci.ubcs.omd.service.IDictBizService;
import com.vci.ubcs.omd.vo.DictBizMVO;
import com.vci.ubcs.omd.wrapper.DictBizWrapper;
import com.vci.ubcs.common.constant.CommonConstant;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
@@ -17,9 +20,6 @@
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import com.vci.ubcs.omd.cache.DictBizCache;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.vo.DictBizMVO;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java
@@ -16,14 +16,14 @@
 */
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.cache.DictBizCache;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.vo.DictBizMVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import com.vci.ubcs.omd.cache.DictBizCache;
import com.vci.ubcs.omd.entity.DictBizM;
import com.vci.ubcs.omd.vo.DictBizMVO;
import java.util.List;
import java.util.Objects;
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/UserPwdstrategyController.java
@@ -57,6 +57,4 @@
        return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO));
    }
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/UserPwdstrategyMapper.java
@@ -37,5 +37,13 @@
     */
    int deleteByUserIds(List<Long> userIds);
    /**
     * æ ¹æ®å¯†ç ç­–ç•¥id查询采用了默认密码策略的用户id
     * @param strategeyId
     * @return
     */
    List<Long> queryByUseISDefault(Long strategeyId);
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IUserPwdstrategyService.java
@@ -4,6 +4,8 @@
import com.vci.ubcs.system.entity.UserPwdstrategy;
import com.vci.ubcs.system.vo.UserPwdstrategyVO;
import java.util.List;
/**
 * ç”¨æˆ·å¯†ç ç­–略管理表(UserPwdstrategy)表服务接口
 *
@@ -28,7 +30,6 @@
     */
    Boolean submit(UserPwdstrategyVO userPwdstrategyVO);
    List<Long> queryByUseISDefault(Long strategyId);
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
@@ -4,15 +4,17 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.common.constant.CommonConstant;
import com.vci.ubcs.system.entity.Strategy;
import com.vci.ubcs.system.mapper.StrategyMapper;
import com.vci.ubcs.system.service.IStrategyService;
import com.vci.ubcs.system.user.feign.IUserClient;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.utils.Func;
import com.vci.ubcs.system.entity.Strategy;
import org.springframework.data.domain.PageImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
@@ -31,6 +33,12 @@
    @Resource
    private StrategyMapper strategyMapper;
    @Resource
    private UserPwdstrategyServiceImpl userPwdstrategyService;
    @Resource
    private IUserClient userClient;
    /**
     * é€šè¿‡ID查询单条数据
@@ -71,7 +79,10 @@
     * @return å®žä¾‹å¯¹è±¡
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean submit(Strategy strategy) {
        //老的默认密码策略
        Long oldIsDefaultStrategy = null;
        //判断是否携带id
        if(Func.isEmpty(strategy.getId())){
            //执行新增
@@ -85,23 +96,26 @@
            checkPwdStrategy(strategy);
            //如果当前新增设置为默认密码策略,需要将已存在默认密码策略修改为非默认
            if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
                //查询老的默认密码策略,便于下面修改
                oldIsDefaultStrategy = this.queryByIsDefault().getId();
                this.update(Wrappers.<Strategy>update().lambda()
                    .set(Strategy::getIsDefault, CommonConstant.NOT_DEFAULT)
                    .eq(Strategy::getIsDefault, CommonConstant.IS_DEFAULT));
            }
            if(Func.isEmpty(strategy.getCreateTime())){
            //创建时间和修改时间添加
            if(Func.isEmpty(strategy.getCreateTime())||Func.isEmpty(strategy.getUpdateTime())){
                strategy.setCreateTime(new Date());
            }
            if(Func.isEmpty(strategy.getUpdateTime())){
                strategy.setUpdateTime(new Date());
            }
            boolean temp = super.saveOrUpdate(strategy);
            return temp;
            return temp && updateUserStrategyDefault(temp,oldIsDefaultStrategy);
        }else {
            //检验密码策略是否符合要求
            checkPwdStrategy(strategy);
            //如果当前修改设置为默认密码策略,需要将已存在默认密码策略修改为非默认
            if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
                //查询老的默认密码策略,便于下面修改
                oldIsDefaultStrategy = this.queryByIsDefault().getId();
                this.update(Wrappers.<Strategy>update().lambda()
                    .set(Strategy::getIsDefault,CommonConstant.NOT_DEFAULT)
                    .eq(Strategy::getIsDefault,CommonConstant.IS_DEFAULT));
@@ -110,28 +124,53 @@
                    throw new ServiceException("默认密码策略必须有且仅有一条!");
                }
            }
            if(Func.isEmpty(strategy.getUpdateTime())){
                strategy.setUpdateTime(new Date());
            }
            CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
            return super.saveOrUpdate(strategy);
            boolean temp1 = super.saveOrUpdate(strategy);
            boolean temp2 = false;
            if(Func.isNotEmpty(oldIsDefaultStrategy)){
                temp2 = updateUserStrategyDefault(temp1, oldIsDefaultStrategy);
        }
            return temp1 && temp2;
        }
    }
    /**
     * ä¿®æ”¹ä½¿ç”¨é»˜è®¤å¯†ç ç­–略的用户状态
     * @param oldIsDefaultStrategy
     */
    private boolean updateUserStrategyDefault(boolean temp,Long oldIsDefaultStrategy){
        boolean resBoolean = false;
        /**
         * äº§ç”Ÿæ–°çš„默认密码策略,需要将以前采用默认密码策略的用户做一个更改提醒,由于未出现在关联表中的用户都是采用的默认密码策略,所以需要做一个连接查询出用户id
         */
        if(temp && Func.isNotEmpty(oldIsDefaultStrategy)){
            List<Long> userIds = userPwdstrategyService.queryByUseISDefault(oldIsDefaultStrategy);
            if (Func.isNotEmpty(userIds)){
                resBoolean = userClient.updateStrategyStatus(userIds).getData();
            }
        }
        return resBoolean;
    }
    /**
     *     æ£€éªŒå¯†ç ç­–略是否符合要求
     * @param strategy
     */
    public void checkPwdStrategy(Strategy strategy){
    private void checkPwdStrategy(Strategy strategy){
        if(strategy.getRequiredType() > strategy.getCombinationIds().split(",").length){
            throw new ServiceException("必填种类不能大于所选择的密码组合方式的个数!");
        }
        if(strategy.getMaxPwdLen() < strategy.getMinPwdLen()){
            throw new ServiceException("密码最大长度不能小于最小长度!");
        }
        if(strategy.getMinPwdLen() < strategy.getRequiredType() || strategy.getMaxPwdLen() < strategy.getRequiredType()){
        if(Func.isNotEmpty(strategy.getRequiredType()) && (strategy.getMinPwdLen() < strategy.getRequiredType() || strategy.getMaxPwdLen() < strategy.getRequiredType())){
            throw new ServiceException("密码最小长度不能小于必填种类的值!");
        }
        //判断前端是否未提交,是否默认字段
        if(Func.isEmpty(strategy.getIsDefault())){
            strategy.setIsDefault(0L);
        }
    }
    /**
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/UserPwdstrategyServiceImpl.java
@@ -1,14 +1,14 @@
package com.vci.ubcs.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.system.entity.UserPwdstrategy;
import com.vci.ubcs.system.mapper.UserPwdstrategyMapper;
import com.vci.ubcs.system.service.IUserPwdstrategyService;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import lombok.RequiredArgsConstructor;
import com.vci.ubcs.common.constant.CommonConstant;
import com.vci.ubcs.system.entity.UserPwdstrategy;
import com.vci.ubcs.system.vo.UserPwdstrategyVO;
import lombok.RequiredArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -47,21 +47,27 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean submit(UserPwdstrategyVO userPwdstrategyVO) {
        if(Func.isEmpty(userPwdstrategyVO.getUserIds())){
            throw new ServiceException("必填参数为空");
        }
        //先删除
        int eft = this.userPwdstrategyMapper.deleteByUserIds(userPwdstrategyVO.getUserIds());
        this.userPwdstrategyMapper.deleteByUserIds(userPwdstrategyVO.getUserIds());
        //在新增
        List<UserPwdstrategy> userPwdstrategyList = new ArrayList<>();
        userPwdstrategyVO.getUserIds().forEach(id->{
            boolean temp = userPwdstrategyList.add(new UserPwdstrategy(id, userPwdstrategyVO.getPwdstrategyId()));
            if(temp){
                //密码策略改动成功之后修改用户状态
                User user = new User();
                user.setId(id);
                user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID);
                userClient.updateUser(user);
            }
             userPwdstrategyList.add(new UserPwdstrategy(id, userPwdstrategyVO.getPwdstrategyId()));
        });
        return this.saveBatch(userPwdstrategyList);
        //密码策略改动成功之后修改用户状态
        Boolean temp = userClient.updateStrategyStatus(userPwdstrategyVO.getUserIds()).getData();
        return temp && this.saveBatch(userPwdstrategyList);
    }
    @Override
    public List<Long> queryByUseISDefault(Long strategyId) {
        if(Func.isEmpty(strategyId)){
            throw new ServiceException("设置默认密码策略出错!");
        }
        return this.userPwdstrategyMapper.queryByUseISDefault(strategyId);
    }
}
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/UserPwdstrategyMapper.xml
@@ -34,6 +34,20 @@
        </where>
    </select>
    <select id="queryByUseISDefault" resultType="java.lang.Long">
        SELECT ID
        FROM PL_ORG_USER
        WHERE ID NOT IN (SELECT psup.USER_ID ID
                         FROM PL_SYS_USER_PWDSTRATEGY PSUP
                                  LEFT JOIN PL_SYS_PWDSTRATEGY PSP ON PSUP.PWDSTRATEGY_ID = PSP.ID)
        UNION
        (SELECT psup.USER_ID ID
         FROM PL_SYS_USER_PWDSTRATEGY PSUP
                  LEFT JOIN PL_SYS_PWDSTRATEGY PSP ON PSUP.PWDSTRATEGY_ID = PSP.ID
         WHERE PSUP.PWDSTRATEGY_ID = #{strategeyId})
    </select>
    <!--通过主键修改数据-->
    <update id="update">
        update PL_SYS_USER_PWDSTRATEGY
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/feign/UserClient.java
@@ -26,10 +26,7 @@
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -99,4 +96,10 @@
        return R.data(service.updateUser(user));
    }
    @Override
    @PostMapping(UPDATE_USER_STRATEGY_STATUS)
    public R<Boolean> updateStrategyStatus(@RequestParam List<Long> userIds) {
        return R.data(service.updateByUseStrategyId(userIds));
    }
}
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/IUserService.java
@@ -89,7 +89,6 @@
     */
    IPage<UserVO> selectUserSearch(UserVO user, Query query);
    /**
     * ç”¨æˆ·ä¿¡æ¯
     *
@@ -220,4 +219,11 @@
     */
    Long checkRenAndExpr(Long userId);
    /**
     * å› å¯†ç ç­–略修改或默认密码策略被修改,所以用户状态提醒也需做相应的更改
     * @param userIds
     * @return
     */
    boolean updateByUseStrategyId(List<Long> userIds);
}
Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -67,6 +67,7 @@
@Service
@RequiredArgsConstructor
public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
    private static final String GUEST_NAME = "guest";
    private final IUserDeptService userDeptService;
@@ -503,6 +504,11 @@
        return 0L;
    }
    @Override
    public boolean updateByUseStrategyId(List<Long> userIds) {
        return this.update(Wrappers.<User>lambdaUpdate().in(User::getId, userIds).set(User::getStrategyUpdateStatus,CommonConstant.IS_DEFAULT));
    }
    /**
     * æ—¶é—´æ ¼å¼è½¬å¤©
     * @param date
Source/data/applogs/xxl-job/xxl-job-admin.log
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
2023-04-12 09:57:45,417 INFO [background-preinit] o.h.validator.internal.util.Version [Version.java : 21] HV000001: Hibernate Validator 6.2.3.Final
2023-04-12 09:57:46,398 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-04-12 09:57:46,400 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
Source/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
2023-04-12 09:57:50,683 INFO [background-preinit] o.h.validator.internal.util.Version [Version.java : 21] HV000001: Hibernate Validator 6.2.3.Final
2023-04-12 09:57:51,691 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.impl.NacosClientAuthServiceImpl success.
2023-04-12 09:57:51,693 INFO [main] c.a.n.p.a.s.c.ClientAuthPluginManager [ClientAuthPluginManager.java : 56] [ClientAuthPluginManager] Load ClientAuthService com.alibaba.nacos.client.auth.ram.RamClientAuthServiceImpl success.
2023-04-12 09:57:58,635 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob] & group[DEFAULT_GROUP]
2023-04-12 09:57:58,646 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob.yaml] & group[DEFAULT_GROUP]
2023-04-12 09:57:58,659 WARN [main] c.a.c.n.c.NacosPropertySourceBuilder [NacosPropertySourceBuilder.java : 87] Ignore the empty nacos configuration and get it based on dataId[ubcs-xxljob-dev.yaml] & group[DEFAULT_GROUP]
2023-04-12 09:57:58,661 INFO [main] o.s.c.b.c.PropertySourceBootstrapConfiguration [PropertySourceBootstrapConfiguration.java : 109] Located property source: [BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-xxljob,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs-dev.yaml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ubcs.yaml,DEFAULT_GROUP'}]