dangsn
2024-12-20 c34375c1f233fbc4cf3e754d2c59e5abc65e87da
图标服务功能,以及AES加密
已修改8个文件
已添加6个文件
717 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLIconDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconGroupVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconVO.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciLifeCycleTrans.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebIconController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebIconserviceI.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebIconServiceImpl.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLIconDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.vci.dto;
import lombok.Data;
/**
 * @Description å›¾æ ‡ä¼ è¾“对象
 * @Author dangsn
 * @Date 2024/12/20 11:35
 */
@Data
public class PLIconDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = -8274239331362353099L;
    /**
     * å”¯ä¸€æ ‡è¯†
     */
    private String oid;
    /**
     * å›¾æ ‡åç§°
     */
    private String name;
    /**
     * å›¾æ ‡å†…容
     */
    private String content;
    /**
     * å›¾æ ‡ç±»åž‹
     */
    private String type;
    /**
     * å›¾æ ‡åˆ†ç»„
     */
    private String groups;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconGroupVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.vci.pagemodel;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * @Description
 * @Author dangsn
 * @Date 2024/12/20 17:35
 */
@Data
public class PLIconGroupVO implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = -2130637697533772413L;
    /**
     * å›¾æ ‡æ‰€å±žåº“
     */
    private String lable;
    /**
     * å›¾æ ‡
     */
    private List<PLIconVO> list;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.pagemodel;
import lombok.Data;
/**
 * @Description å›¾æ ‡æ˜¾ç¤ºå¯¹è±¡
 * @Author dangsn
 * @Date 2024/12/20 11:37
 */
@Data
public class PLIconVO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = -8797180178702594251L;
    /**
     * å”¯ä¸€æ ‡è¯†
     */
    private String oid;
    /**
     * å›¾æ ‡åç§°
     */
    private String name;
    /**
     * å›¾æ ‡å†…容
     */
    private String content;
    /**
     * å›¾æ ‡ç±»åž‹
     */
    private String type;
    /**
     * å›¾æ ‡åˆ†ç»„
     */
    private String groups;
    /**
     * å›¾æ ‡æ‰€å±žåº“
     */
    private String lable;
}
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciEnum.java
@@ -22,7 +22,7 @@
     * å€¼ç±»åž‹ï¼Œé»˜è®¤ä¸ºå­—符串
     * @return
     */
    Class valueType() default java.lang.String.class;
    Class valueType() default String.class;
    /**
     * æ˜¾ç¤ºæ–‡æœ¬
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciLifeCycleTrans.java
@@ -9,7 +9,7 @@
 * ç”Ÿå‘½å‘¨æœŸçŠ¶æ€æµå‘
 * @author weidy
 */
@Target({java.lang.annotation.ElementType.TYPE, ElementType.FIELD})
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface VciLifeCycleTrans {
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java
@@ -35,16 +35,16 @@
    /**
     * åˆ¤æ–­åŸºæœ¬ç±»åž‹
     * @see     java.lang.String
     * @see     java.lang.Boolean#TYPE
     * @see     java.lang.Character#TYPE
     * @see     java.lang.Byte#TYPE
     * @see     java.lang.Short#TYPE
     * @see     java.lang.Integer#TYPE
     * @see     java.lang.Long#TYPE
     * @see     java.lang.Float#TYPE
     * @see     java.lang.Double#TYPE
     * @see     java.lang.Boolean#TYPE
     * @see     String
     * @see     Boolean#TYPE
     * @see     Character#TYPE
     * @see     Byte#TYPE
     * @see     Short#TYPE
     * @see     Integer#TYPE
     * @see     Long#TYPE
     * @see     Float#TYPE
     * @see     Double#TYPE
     * @see     Boolean#TYPE
     * @see     byte
     * @see     short
     * @see     int
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java
@@ -9,6 +9,7 @@
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@@ -333,16 +334,16 @@
    /**
     * aes解密
     * @param secretKey ç§˜é’¥
     * @param encryptedData     Data
     * @param encryptedData å¯†æ–‡
     * @return digest as a hex string
     */
    public static String decryptAes(String encryptedData, String secretKey) throws Exception {
        // AES å¯†é’¥é•¿åº¦éœ€è¦æ˜¯ 128, 192, æˆ– 256 ä½ï¼ˆ16, 24, æˆ– 32 å­—节)
        byte[] keyBytes = secretKey.getBytes("UTF-8");
        byte[] keyBytes = secretKey.getBytes(StandardCharsets.UTF_8);
        SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
        // åˆå§‹åŒ–向量 IV ä¹Ÿéœ€è¦æ˜¯ 128 ä½ï¼ˆ16 å­—节)
        byte[] ivBytes = secretKey.substring(0, 16).getBytes("UTF-8");
        byte[] ivBytes = secretKey.substring(0, 16).getBytes(StandardCharsets.UTF_8);
        IvParameterSpec iv = new IvParameterSpec(ivBytes);
        // è§£å¯†
@@ -353,7 +354,30 @@
        byte[] decodedValue = Base64.getDecoder().decode(encryptedData);
        byte[] decryptedBytes = cipher.doFinal(decodedValue);
        return new String(decryptedBytes, "UTF-8");
        return new String(decryptedBytes, StandardCharsets.UTF_8);
    }
    /**
     * aes解密
     * @param secretKey ç§˜é’¥
     * @param decryptData æ˜Žæ–‡
     * @return digest as a hex string
     */
    public static String encryptAes(String decryptData, String secretKey) throws Exception{
        // AES å¯†é’¥é•¿åº¦éœ€è¦æ˜¯ 128, 192, æˆ– 256 ä½ï¼ˆ16, 24, æˆ– 32 å­—节)
        byte[] keyBytes = secretKey.getBytes(StandardCharsets.UTF_8);
        SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
        // åˆå§‹åŒ–向量 IV ä¹Ÿéœ€è¦æ˜¯ 128 ä½ï¼ˆ16 å­—节)
        byte[] ivBytes = secretKey.substring(0, 16).getBytes(StandardCharsets.UTF_8);
        IvParameterSpec iv = new IvParameterSpec(ivBytes);
        // åР坆
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, key, iv);
        byte[] encryptBytes = cipher.doFinal(decryptData.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptBytes);
    }
    /**
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java
@@ -395,7 +395,7 @@
     * @param o2 second Object to compare
     * @return whether the given objects are equal
     * @see Object#equals(Object)
     * @see java.util.Arrays#equals
     * @see Arrays#equals
     */
    public static boolean equalsSafe(@Nullable Object o1, @Nullable Object o2) {
        return ObjectUtil.nullSafeEquals(o1, o2);
@@ -1243,6 +1243,16 @@
    }
    /**
     * AES è§£å¯†
     * @param decryptData
     * @param secretKey
     * @return
     */
    public static String encryptAes(String decryptData, String secretKey) throws Exception {
        return DigestUtil.encryptAes(decryptData, secretKey);
    }
    /**
     * hmacMd5 Hex
     *
     * @param bytes Data to digest
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java
@@ -1322,7 +1322,7 @@
        Map<String,Object> map = new HashMap<String,Object>();
        if(o!=null) {
            String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
            if(org.apache.commons.lang3.StringUtils.isNotBlank(jsonString)) {
            if(StringUtils.isNotBlank(jsonString)) {
                JSONObject jsonObject = JSONObject.parseObject(jsonString);
                if(jsonObject!=null){
                    for(String key : jsonObject.keySet()){
@@ -1343,7 +1343,7 @@
        Map<String,String> map = new HashMap<String,String>();
        if(o!=null) {
            String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
            if(org.apache.commons.lang3.StringUtils.isNotBlank(jsonString)) {
            if(StringUtils.isNotBlank(jsonString)) {
                JSONObject jsonObject = JSONObject.parseObject(jsonString);
                if(jsonObject!=null){
                    for(String key : jsonObject.keySet()){
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebIconController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
package com.vci.web.controller;
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.dto.PLIconDTO;
import com.vci.pagemodel.PLIconGroupVO;
import com.vci.pagemodel.PLIconVO;
import com.vci.starter.web.annotation.log.VciBusinessLog;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.util.LocalFileUtil;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.service.WebIconserviceI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.util.List;
/**
 * @Description å›¾æ ‡æŽ§åˆ¶å™¨
 * @Author dangsn
 * @Date 2024/12/20 10:24
 */
@VciBusinessLog(modelName="图标控制器",notStore=true)
@RestController
@RequestMapping("/webIconController")
public class WebIconController {
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * å›¾æ ‡æœåŠ¡
     */
    @Resource
    private WebIconserviceI iconserviceI;
    /**
     * å¯¼å…¥å›¾æ ‡
     * @param file å›¾æ ‡æ–‡ä»¶
     */
    @PostMapping("/importIcon")
    @VciBusinessLog(operateName = "导入图标库", description = "导入图标库")
    public BaseResult importIcon(String type, String groups, MultipartFile file){
        String fileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
        File iconFile = new File(fileName);
        try {
            file.transferTo(iconFile);
            if (iconFile != null) {
                iconserviceI.importIcon(type, groups, iconFile);
                return BaseResult.successMsg("导入成功!");
            } else {
                return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"无导入的文件"});
            }
        }catch (Throwable e) {
            throw new VciBaseException(VciBaseUtil.getExceptionMessage(e),new String[0],e);
        }finally {
            iconFile.delete();
        }
    }
    /**
     * æ–°å¢žå›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/addIcon")
    @VciBusinessLog(operateName = "新增图标", description = "新增图标")
    public BaseResult addIcon(@RequestBody PLIconDTO iconDTO){
        try {
            iconserviceI.addIcon(iconDTO);
            return BaseResult.successMsg("新增图标成功!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "新增图标出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * ä¿®æ”¹å›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PutMapping("/editIcon")
    @VciBusinessLog(operateName = "修改图标", description = "修改图标")
    public BaseResult editIcon(@RequestBody PLIconDTO iconDTO){
        try {
            iconserviceI.editIcon(iconDTO);
            return BaseResult.successMsg("修改图标成功!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "修改图标出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * åˆ é™¤å›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @DeleteMapping("/delIcon")
    @VciBusinessLog(operateName = "删除图标", description = "删除图标")
    public BaseResult delIcon(PLIconDTO iconDTO){
        try {
            iconserviceI.delIcon(iconDTO);
            return BaseResult.successMsg("删除图标成功!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "删除图标出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * èŽ·å–å›¾æ ‡åç§°
     * @return å›¾æ ‡åç§°
     */
    @VciBusinessLog(operateName = "获取图标名称", description = "获取图标名称")
    @GetMapping("/getIconName")
    public BaseResult<String> getIconName(){
        try{
            List<String> iconNameList = iconserviceI.getIconName();
            BaseResult baseResult = BaseResult.success();
            baseResult.setData(iconNameList);
            return baseResult;
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "获取图标名称出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * èŽ·å–æ‰€æœ‰å›¾æ ‡ä¿¡æ¯
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return å›¾æ ‡ä¿¡æ¯
     */
    @VciBusinessLog(operateName = "获取所有图标", description = "获取所有图标")
    @GetMapping("/getAllIcon")
    public BaseResult<PLIconGroupVO> getAllIcon(BaseQueryObject baseQueryObject){
        try{
            List<PLIconGroupVO> iconList = iconserviceI.getAllIcon(baseQueryObject);
            BaseResult baseResult = BaseResult.success();
            baseResult.setData(iconList);
            return baseResult;
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "获取图标出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * èŽ·å–å›¾æ ‡ä¿¡æ¯ï¼Œåˆ†é¡µ
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return å›¾æ ‡ä¿¡æ¯
     */
    @VciBusinessLog(operateName = "获取图标", description = "获取图标表格数据")
    @GetMapping("/getGrid")
    public DataGrid<PLIconVO> getGrid(BaseQueryObject baseQueryObject){
        try{
            return iconserviceI.getGrid(baseQueryObject);
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "获取图标出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return new DataGrid<>(exceptionMessage);
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java
@@ -129,7 +129,7 @@
     * @param releaseStatus å‘布状态,如果目标状态是发布状态时传递这个值
     * @throws VciBaseException  è·ƒè¿å‡ºé”™çš„æ˜¯ä¼šæŠ›å‡ºå¼‚常
     */
    void batchTransVo(com.vci.corba.omd.data.BusinessObject[] bos, OsLifeCycleLineVO[] lineVOs,
    void batchTransVo(BusinessObject[] bos, OsLifeCycleLineVO[] lineVOs,
                      String[] releaseStatus) throws VciBaseException;
    /**
@@ -138,7 +138,7 @@
     * @param vos è·ƒè¿å¯¹è±¡
     * @throws VciBaseException è·ƒè¿å‡ºé”™çš„æ˜¯ä¼šæŠ›å‡ºå¼‚常
     */
    void batchTransVo(com.vci.corba.omd.data.BusinessObject[] bos, OsLifeCycleLineVO[] vos)
    void batchTransVo(BusinessObject[] bos, OsLifeCycleLineVO[] vos)
            throws VciBaseException;
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebIconserviceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.vci.web.service;
import com.vci.dto.PLIconDTO;
import com.vci.pagemodel.PLIconGroupVO;
import com.vci.pagemodel.PLIconVO;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.DataGrid;
import java.io.File;
import java.util.List;
/**
 * @Description å›¾æ ‡æœåŠ¡
 * @Author dangsn
 * @Date 2024/12/20 10:26
 */
public interface WebIconserviceI {
    /**
     * å¯¼å…¥å›¾æ ‡
     *
     * @param type å›¾æ ‡ç±»åž‹
     * @param groups å›¾æ ‡åˆ†ç»„
     * @param iconFile å›¾æ ‡æ–‡ä»¶
     * @return æ‰§è¡Œç»“æžœ
     */
    void importIcon(String type, String groups, File iconFile);
    /**
     * æ–°å¢žå›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    void addIcon(PLIconDTO iconDTO);
    /**
     * ä¿®æ”¹å›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    void editIcon(PLIconDTO iconDTO);
    /**
     * åˆ é™¤å›¾æ ‡
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    void delIcon(PLIconDTO iconDTO);
    /**
     * èŽ·å–å›¾æ ‡åç§°
     * @return å›¾æ ‡åç§°
     */
    List<String> getIconName();
    /**
     * èŽ·å–å›¾æ ‡
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return å›¾æ ‡ä¿¡æ¯
     */
    List<PLIconGroupVO> getAllIcon(BaseQueryObject baseQueryObject);
    /**
     * èŽ·å–å›¾æ ‡è¡¨æ ¼æ•°æ®
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return å›¾æ ‡ä¿¡æ¯
     */
    DataGrid<PLIconVO> getGrid(BaseQueryObject baseQueryObject);
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java
@@ -129,7 +129,7 @@
    public void transStatus(List<BusinessObject> boList, String targetStatus)
            throws VciBaseException {
        WebUtil.alertNotNull(boList,"业务数据对象",targetStatus,"目标对象");
        transStatus(boList.toArray(new com.vci.corba.omd.data.BusinessObject[0]), targetStatus);
        transStatus(boList.toArray(new BusinessObject[0]), targetStatus);
    }
    /**
@@ -264,7 +264,7 @@
                    }else {
                        OsLifeCycleLineEventVO[] eventVOs = new OsLifeCycleLineEventVO[route.transitionVOEvents.length];
                        for (int i = 0; i < route.transitionVOEvents.length; i++) {
                            com.vci.corba.omd.lcm.TransitionVOEvent event = route.transitionVOEvents[i];
                            TransitionVOEvent event = route.transitionVOEvents[i];
                            OsLifeCycleLineEventVO eventVO = new OsLifeCycleLineEventVO();
                            eventVO.setOid(event.id);
                            eventVO.setEventFullName(event.name);
@@ -422,7 +422,7 @@
     * @return å¹³å°çš„连接线对象
     */
    private TransitionVO lifeCycleLineVO2DO(OsLifeCycleLineVO lineVO) throws PLException {
        com.vci.corba.omd.lcm.TransitionVO transitionVO = new com.vci.corba.omd.lcm.TransitionVO();
        TransitionVO transitionVO = new TransitionVO();
        transitionVO.id = lineVO.getOid();
        transitionVO.source = lineVO.getSourceLifeStatus();
        transitionVO.destination = lineVO.getTargetLifeStatus();
@@ -1095,7 +1095,7 @@
                        releaseStatus[i] = "";
                    }
                }
                com.vci.corba.omd.lcm.TransitionVO[] vos = new com.vci.corba.omd.lcm.TransitionVO[lineVOs.length];
                TransitionVO[] vos = new TransitionVO[lineVOs.length];
                for(int i = 0 ; i < lineVOs.length; i ++){
                    vos[i] = lifeCycleLineVO2DO(lineVOs[i]);
                }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebIconServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,267 @@
package com.vci.web.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.vci.corba.portal.PortalServicePrx;
import com.vci.corba.portal.data.PLIcon;
import com.vci.dto.PLIconDTO;
import com.vci.pagemodel.PLIconGroupVO;
import com.vci.pagemodel.PLIconVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.pagemodel.PageHelper;
import com.vci.web.service.WebIconserviceI;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import edu.stanford.smi.protege.util.HashList;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
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;
/**
 * @Description å›¾æ ‡æœåŠ¡
 * @Author dangsn
 * @Date 2024/12/20 10:27
 */
@Service
public class WebIconServiceImpl implements WebIconserviceI {
    /**
     * å®¢æˆ·ç«¯å·¥å…·
     */
    @Resource
    private PlatformClientUtil platformClientUtil;
    /**
     * å¯¼å…¥å›¾æ ‡
     *
     * @param type
     * @param groups
     * @param iconFile å›¾æ ‡æ–‡ä»¶
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public void importIcon(String type, String groups, File iconFile) {
        try {
            String fileContent = FileUtils.readFileToString(iconFile, "UTF-8");
            JSONArray jsonArray = JSON.parseArray(fileContent);
            //获取所有的图标信息
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            PLIcon[] iconArr = portalServicePrx.getAllPLIcon();
            List<String> nameList = new ArrayList<>();
            Map<String, PLIcon> iconMap = new HashMap<>();
            for(PLIcon icon : iconArr){
                nameList.add(icon.name);
                iconMap.put(icon.name, icon);
            }
            List<PLIcon> addList = new ArrayList<>();
            List<PLIcon> updateList = new ArrayList<>();
            for(int i = 0; i<jsonArray.size(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String iconContent = jsonObject.getString("svg");
                String iconName = jsonObject.getString("name").toLowerCase();
                if(nameList.contains(iconName)){
                    PLIcon icon = iconMap.get(iconName);
                    icon.content = iconContent;
                    icon.type = type;
                    icon.groups = groups;
                    updateList.add(icon);
                }else{
                    PLIcon icon = new PLIcon();
                    icon.oid = WebUtil.getPk();
                    icon.name = iconName;
                    icon.content = iconContent;
                    icon.type = type;
                    icon.groups = groups;
                    addList.add(icon);
                }
            }
            portalServicePrx.batchSavePLIcon(addList.toArray(new PLIcon[0]));
            portalServicePrx.batchUpdatePLIcon(updateList.toArray(new PLIcon[0]));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * æ–°å¢žå›¾æ ‡
     *
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    @Override
    public void addIcon(PLIconDTO iconDTO) {
        WebUtil.alertNotNull(iconDTO.getName(),"图标名称", iconDTO.getContent(),"图标内容");
        PLIcon plIcon = new PLIcon();
        plIcon.oid = WebUtil.getPk();
        plIcon.name = iconDTO.getName().toLowerCase();
        plIcon.content = iconDTO.getContent();
        plIcon.type = iconDTO.getType();
        plIcon.groups = iconDTO.getGroups();
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            portalServicePrx.savePLIcon(plIcon);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * ä¿®æ”¹å›¾æ ‡
     *
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    @Override
    public void editIcon(PLIconDTO iconDTO) {
        WebUtil.alertNotNull(iconDTO.getName(),"图标名称", iconDTO.getContent(),"图标内容");
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            PLIcon plIcon = portalServicePrx.getPLIconByName(iconDTO.getName().toLowerCase());
            if(StringUtils.isBlank(plIcon.oid)){
                throw new VciBaseException("未获取到【"+iconDTO.getName()+"】图标信息!");
            }
            plIcon.content = iconDTO.getContent();
            plIcon.type = iconDTO.getType();
            plIcon.groups = iconDTO.getGroups();
            portalServicePrx.updatePLIcon(plIcon);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * åˆ é™¤å›¾æ ‡
     *
     * @param iconDTO å›¾æ ‡ä¼ è¾“对象
     */
    @Override
    public void delIcon(PLIconDTO iconDTO) {
        WebUtil.alertNotNull(iconDTO.getOid(),"图标主键", iconDTO.getName(),"图标名称");
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            portalServicePrx.deletePLIconByName(iconDTO.getName());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * èŽ·å–å›¾æ ‡åç§°
     *
     * @return å›¾æ ‡åç§°
     */
    @Override
    public List<String> getIconName() {
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            String[] nameArr = portalServicePrx.getPLIconName();
            return Arrays.asList(nameArr);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * @param baseQueryObject
     * @return
     */
    @Override
    public List<PLIconGroupVO> getAllIcon(BaseQueryObject baseQueryObject) {
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        PLIcon plIcon = new PLIcon();
        String iconName = conditionMap.get("name");
        if(StringUtils.isNotBlank(iconName)){
            plIcon.name = iconName.toLowerCase();
        }
        plIcon.type = conditionMap.get("type");
        plIcon.groups = conditionMap.get("groups");
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            PLIcon[] iconArr = portalServicePrx.getPagePLIcon(plIcon, 0, -1);
            List<PLIconGroupVO> groupVOS = new ArrayList<>();
            List<PLIconVO> voList = COS2VOS(Arrays.asList(iconArr));
            Map<String, List<PLIconVO>> voMap = voList.stream().collect(Collectors.groupingBy(PLIconVO::getLable));
            voMap.forEach((key, value)->{
                PLIconGroupVO groupVO = new PLIconGroupVO();
                groupVO.setLable(key);
                groupVO.setList(value);
                groupVOS.add(groupVO);
            });
            return groupVOS;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    private List<PLIconVO> COS2VOS(List<PLIcon> iconList){
        List<PLIconVO> voList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(iconList)){
            iconList.forEach(co->{
                voList.add(CO2VO(co));
            });
        }
        return voList;
    }
    private PLIconVO CO2VO(PLIcon icon){
        PLIconVO vo = new PLIconVO();
        vo.setOid(icon.oid);
        vo.setName(icon.name);
        vo.setContent(icon.content);
        vo.setType(icon.type);
        vo.setGroups(icon.groups);
        String[] nameArr = icon.name.split(":");
        if(nameArr.length > 1){
            vo.setLable(nameArr[0]);
        }
        return vo;
    }
    /**
     * èŽ·å–å›¾æ ‡è¡¨æ ¼æ•°æ®
     *
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return å›¾æ ‡ä¿¡æ¯
     */
    @Override
    public DataGrid<PLIconVO> getGrid(BaseQueryObject baseQueryObject) {
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        PageHelper pageHelper = baseQueryObject.getPageHelper();
        PLIcon plIcon = new PLIcon();
        String iconName = conditionMap.get("name");
        if(StringUtils.isNotBlank(iconName)){
            plIcon.name = iconName.toLowerCase();
        }
        plIcon.type = conditionMap.get("type");
        plIcon.groups = conditionMap.get("groups");
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            PLIcon[] iconArr = portalServicePrx.getPagePLIcon(plIcon, pageHelper.getPage(), pageHelper.getLimit());
            List<PLIconVO> voList = COS2VOS(Arrays.asList(iconArr));
            DataGrid<PLIconVO> dataGrid = new DataGrid<>();
            dataGrid.setData(voList);
            long count = portalServicePrx.getCountPLIcon(plIcon);
            dataGrid.setTotal(count);
            return dataGrid;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}