xiexiang преди 1 година
родител
ревизия
9b5c13e0ef

+ 6 - 1
src/main/java/cn/cslg/pas/common/dto/business/CustomOptionDTO.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.common.dto.business;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
 /**
@@ -19,4 +18,10 @@ public class CustomOptionDTO {
      * 所属自定义栏位
      */
     private Integer customFieldId;
+
+    /**
+     * 父id
+     */
+    private Integer parentId;
+
 }

+ 14 - 0
src/main/java/cn/cslg/pas/common/dto/business/CustomOptionDeleteDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 删除自定义选项DTO
+ * @Author xiexiang
+ * @Date 2023/11/14
+ */
+@Data
+public class CustomOptionDeleteDTO {
+    private Integer id;
+    private Integer customFieldId;
+}

+ 15 - 0
src/main/java/cn/cslg/pas/common/dto/business/GetCustomOptionDTO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 获取自定义选项DTO
+ * @Author xiexiang
+ * @Date 2023/11/14
+ */
+@Data
+public class GetCustomOptionDTO {
+    private String name;
+    private Integer type;
+    private Integer customFieldId;
+}

+ 5 - 0
src/main/java/cn/cslg/pas/common/dto/business/UpdateCustomOptionDTO.java

@@ -23,4 +23,9 @@ public class UpdateCustomOptionDTO {
      * 所属自定义栏位
      */
     private Integer customFieldId;
+
+    /**
+     * 父id
+     */
+    private Integer parentId;
 }

+ 5 - 13
src/main/java/cn/cslg/pas/controller/CustomOptionController.java

@@ -1,18 +1,12 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.business.CustomFieldDTO;
-import cn.cslg.pas.common.dto.business.CustomOptionDTO;
-import cn.cslg.pas.common.dto.business.UpdateCustomFieldDTO;
-import cn.cslg.pas.common.dto.business.UpdateCustomOptionDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.common.vo.business.CustomOptionVO;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.service.business.CustomOptionService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -38,10 +32,8 @@ public class CustomOptionController {
 
     @Operation(summary = "查询自定义选项")
     @PostMapping("/queryCustomOption")
-    public Response queryCustomOption(@RequestBody Integer customFieldId) throws Exception {
-        List<CustomOptionVO> customOptionVOS = customOptionService.getCustomOption(customFieldId);
-        Records records = new Records();
-        records.setData(customOptionVOS);
+    public Response queryCustomOption(@RequestBody GetCustomOptionDTO getCustomOptionDTO) throws Exception {
+        Records records = customOptionService.getCustomOption(getCustomOptionDTO);
         return Response.success(records);
     }
 
@@ -80,8 +72,8 @@ public class CustomOptionController {
 
     @Operation(summary = "删除自定义选项")
     @PostMapping("/deleteCustomOption")
-    public Response deleteCustomOption(@RequestBody List<Integer> ids) throws Exception {
-        customOptionService.deleteCustomOption(ids);
+    public Response deleteCustomOption(@RequestBody List<CustomOptionDeleteDTO> customOptionDeleteDTOS) throws Exception {
+        customOptionService.deleteCustomOption(customOptionDeleteDTOS);
         return Response.success("删除成功");
     }
 

+ 158 - 73
src/main/java/cn/cslg/pas/service/business/CustomOptionService.java

@@ -1,12 +1,13 @@
 package cn.cslg.pas.service.business;
 
-import cn.cslg.pas.common.dto.business.CustomOptionDTO;
-import cn.cslg.pas.common.dto.business.UpdateCustomOptionDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.CustomOptionVO;
+import cn.cslg.pas.domain.business.CustomField;
 import cn.cslg.pas.domain.business.CustomOption;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -18,12 +19,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
+ * 自定义选项的Service层
  * @Author xiexiang
  * @Date 2023/11/8
  */
@@ -38,6 +41,17 @@ public class CustomOptionService extends ServiceImpl<CustomOptionMapper, CustomO
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private CustomFieldService customFieldService;
+
+    @Autowired
+    private TreeNodeService treeNodeService;
+
+    /**
+     * 新增自定义选项
+     * @param customOptionDTO
+     * @return
+     */
     public Integer addCustomOption(CustomOptionDTO customOptionDTO) {
         if (customOptionDTO.getName().equals(null)) {
             throw new XiaoShiException("选项值不能为空!");
@@ -46,30 +60,52 @@ public class CustomOptionService extends ServiceImpl<CustomOptionMapper, CustomO
             throw new XiaoShiException("所属自定义栏位不能为空!");
         }
         String name = customOptionDTO.getName();
-        //检查名称是否规范
-        customOptionDTO.setName(name.trim());
-        //同一个自定义栏位下值选项不能重复
-        LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CustomOption::getName, name);
-        queryWrapper.eq(CustomOption::getCustomFieldId, customOptionDTO.getCustomFieldId());
-        List<CustomOption> customOptions = this.list(queryWrapper);
-        if (customOptions != null && customOptions.size() != 0) {
-            throw new XiaoShiException("名称不能重复");
-        }
-        //获取登录人信息
-        PersonnelVO personnelVO = new PersonnelVO();
-        try {
-            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        } catch (Exception e) {
-            throw new UnLoginException("未登录");
+        //所属自定义栏位的id
+        Integer customFieldId = customOptionDTO.getCustomFieldId();
+        //查询自定义栏位的类型,如果为树,则调用架构部分
+        CustomField customField = customFieldService.getById(customFieldId);
+        Integer customFieldType = customField.getType();
+        if (customFieldType.equals(6)) {
+            TreeNodeDTO treeNodeDTO = new TreeNodeDTO();
+            treeNodeDTO.setName(name);
+            //自定义树 设置为4
+            treeNodeDTO.setType(4);
+            treeNodeDTO.setParentId(customOptionDTO.getParentId());
+            treeNodeDTO.setTypeId(customOptionDTO.getCustomFieldId());
+            List<MultipartFile> files = new ArrayList<>();
+            Integer id = (Integer) treeNodeService.addMessage(treeNodeDTO, files);
+            return id;
+        } else {
+            //检查名称是否规范
+            customOptionDTO.setName(name.trim());
+            //同一个自定义栏位下值选项不能重复
+            LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CustomOption::getName, name);
+            queryWrapper.eq(CustomOption::getCustomFieldId, customOptionDTO.getCustomFieldId());
+            List<CustomOption> customOptions = this.list(queryWrapper);
+            if (customOptions != null && customOptions.size() != 0) {
+                throw new XiaoShiException("名称不能重复");
+            }
+            //获取登录人信息
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new UnLoginException("未登录");
+            }
+            CustomOption customOption = new CustomOption();
+            BeanUtils.copyProperties(customOptionDTO, customOption);
+            customOption.setCreateId(personnelVO.getId());
+            customOption.insert();
+            return customOption.getId();
         }
-        CustomOption customOption = new CustomOption();
-        BeanUtils.copyProperties(customOptionDTO, customOption);
-        customOption.setCreateId(personnelVO.getId());
-        customOption.insert();
-        return customOption.getId();
     }
 
+    /**
+     * 更新自定义选项
+     * @param updateCustomOptionDTO
+     * @return
+     */
     public Integer updateCustomOption(UpdateCustomOptionDTO updateCustomOptionDTO) {
         if (updateCustomOptionDTO.getName().equals(null)) {
             throw new XiaoShiException("选项值不能为空!");
@@ -77,67 +113,116 @@ public class CustomOptionService extends ServiceImpl<CustomOptionMapper, CustomO
         if (updateCustomOptionDTO.getCustomFieldId().equals(null)) {
             throw new XiaoShiException("所属自定义栏位不能为空!");
         }
+        Integer id = null;
         String name = updateCustomOptionDTO.getName();
-        CustomOption customOption = this.getById(updateCustomOptionDTO.getId());
-        //检查名称是否规范
-        updateCustomOptionDTO.setName(name.trim());
-        //同一个自定义栏位下值选项不能重复
-        LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CustomOption::getName, name);
-        queryWrapper.eq(CustomOption::getCustomFieldId, updateCustomOptionDTO.getCustomFieldId());
-        List<CustomOption> customOptions = this.list(queryWrapper);
-        if (!name.equals(customOption.getName()) && customOptions.size() != 0) {
-            throw new XiaoShiException("名称重复");
+        //所属自定义栏位的id
+        Integer customFieldId = updateCustomOptionDTO.getCustomFieldId();
+        //查询自定义栏位的类型,如果为树,则调用架构部分
+        CustomField customField = customFieldService.getById(customFieldId);
+        Integer customFieldType = customField.getType();
+        if (customFieldType.equals(6)) {
+            UpdateTreeNodeDTO updateTreeNodeDTO = new UpdateTreeNodeDTO();
+            BeanUtils.copyProperties(updateCustomOptionDTO, updateTreeNodeDTO);
+            List<MultipartFile> files = new ArrayList<>();
+            id = (Integer) treeNodeService.updateMessage(updateTreeNodeDTO, files);
+        } else {
+            CustomOption customOption = this.getById(updateCustomOptionDTO.getId());
+            //检查名称是否规范
+            updateCustomOptionDTO.setName(name.trim());
+            //同一个自定义栏位下值选项不能重复
+            LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CustomOption::getName, name);
+            queryWrapper.eq(CustomOption::getCustomFieldId, updateCustomOptionDTO.getCustomFieldId());
+            List<CustomOption> customOptions = this.list(queryWrapper);
+            if (!name.equals(customOption.getName()) && customOptions.size() != 0) {
+                throw new XiaoShiException("名称重复");
+            }
+            BeanUtils.copyProperties(updateCustomOptionDTO, customOption);
+            customOption.updateById();
+            id = customOption.getId();
         }
-        BeanUtils.copyProperties(updateCustomOptionDTO, customOption);
-        customOption.updateById();
-        return customOption.getId();
+        return id;
     }
 
-    public List<CustomOptionVO> getCustomOption(Integer customFieldId) throws IOException {
-        List<CustomOptionVO> customOptionVOS = new ArrayList<>();
-        if (!customFieldId.equals(null) && customFieldId != 0) {
-            List<String> createIds = new ArrayList<>();
-            LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(CustomOption::getCustomFieldId, customFieldId);
-            List<CustomOption> customOptions = this.list(queryWrapper);
-            customOptions.forEach(
-                    item -> {
-                        if (item.getCreateId() != null) {
-                            createIds.add(item.getCreateId());
+    /**
+     * 查询自定义选项
+     * @param getCustomOptionDTO
+     * @return
+     * @throws Exception
+     */
+    public Records getCustomOption(GetCustomOptionDTO getCustomOptionDTO) throws Exception {
+        Integer customFieldId = getCustomOptionDTO.getCustomFieldId();
+        Records records = new Records();
+        CustomField customField = customFieldService.getById(customFieldId);
+        Integer customFieldType = customField.getType();
+        if (customFieldType.equals(6)) {
+            QueryTreeNodeDTO queryTreeNodeDTO = new QueryTreeNodeDTO();
+            queryTreeNodeDTO.setName(getCustomOptionDTO.getName());
+            queryTreeNodeDTO.setType(4);
+            queryTreeNodeDTO.setTypeId(customFieldId);
+            records = treeNodeService.queryMessage(queryTreeNodeDTO);
+        } else {
+            List<CustomOptionVO> customOptionVOS = new ArrayList<>();
+            if (!customFieldId.equals(null) && customFieldId != 0) {
+                List<String> createIds = new ArrayList<>();
+                LambdaQueryWrapper<CustomOption> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(CustomOption::getCustomFieldId, customFieldId);
+                List<CustomOption> customOptions = this.list(queryWrapper);
+                customOptions.forEach(
+                        item -> {
+                            if (item.getCreateId() != null) {
+                                createIds.add(item.getCreateId());
+                            }
+                        }
+                );
+                List<Personnel> personnels = new ArrayList<>();
+                //查询创建人名称
+                if (createIds.size() != 0) {
+                    String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+                    JSONObject jsonObject = JSONObject.parseObject(res);
+                    personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+                }
+                if (customOptions != null && customOptions.size() != 0) {
+                    for (CustomOption customOption : customOptions) {
+                        CustomOptionVO customOptionVO = new CustomOptionVO();
+                        BeanUtils.copyProperties(customOption, customOptionVO);
+                        //装载人员信息
+                        Personnel personnel = personnels.stream().filter(item -> item.getId().equals(customOptionVO.getCreateId())).findFirst().orElse(null);
+                        if (personnel != null) {
+                            customOptionVO.setCreateName(personnel.getPersonnelName());
+                            customOptionVOS.add(customOptionVO);
+                        } else {
+                            throw new XiaoShiException("未获取到创建人信息");
                         }
-                    }
-            );
-            List<Personnel> personnels = new ArrayList<>();
-            //查询创建人名称
-            if (createIds.size() != 0) {
-                String res = permissionService.getPersonnelByIdsFromPCS(createIds);
-                JSONObject jsonObject = JSONObject.parseObject(res);
-                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
-            }
-            if (customOptions != null && customOptions.size() != 0) {
-                for (CustomOption customOption : customOptions) {
-                    CustomOptionVO customOptionVO = new CustomOptionVO();
-                    BeanUtils.copyProperties(customOption, customOptionVO);
-                    //装载人员信息
-                    Personnel personnel = personnels.stream().filter(item -> item.getId().equals(customOptionVO.getCreateId())).findFirst().orElse(null);
-                    if (personnel != null) {
-                        customOptionVO.setCreateName(personnel.getPersonnelName());
-                        customOptionVOS.add(customOptionVO);
-                    } else {
-                        throw new XiaoShiException("未获取到创建人信息");
                     }
                 }
+            } else {
+                throw new XiaoShiException("错误参数");
             }
-        } else {
-            throw new XiaoShiException("错误参数");
+            records.setData(customOptionVOS);
         }
-        return customOptionVOS;
+        return records;
     }
 
-    public void deleteCustomOption(List<Integer> ids){
-        if (ids != null && ids.size() > 0) {
-            this.removeBatchByIds(ids);
+    /**
+     * 删除自定义选项
+     * @param customOptionDeleteDTOS
+     * @throws IOException
+     */
+    public void deleteCustomOption(List<CustomOptionDeleteDTO> customOptionDeleteDTOS) throws IOException {
+        if (customOptionDeleteDTOS != null && customOptionDeleteDTOS.size() > 0) {
+            for (CustomOptionDeleteDTO customOptionDeleteDTO : customOptionDeleteDTOS) {
+                Integer customFieldId = customOptionDeleteDTO.getCustomFieldId();
+                CustomField customField = customFieldService.getById(customFieldId);
+                Integer customFieldType = customField.getType();
+                List<Integer> deleteIds = new ArrayList<>();
+                deleteIds.add(customOptionDeleteDTO.getId());
+                if (customFieldType.equals(6)) {
+                    treeNodeService.deleteMessage(deleteIds);
+                } else {
+                    this.removeBatchByIds(deleteIds);
+                }
+            }
         } else {
             throw new XiaoShiException("参数错误");
         }

+ 31 - 0
src/test/java/cn/cslg/pas/service/CustomFieldServiceTests.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.business.CustomFieldDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.controller.CustomFieldController;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/11/14
+ */
+@SpringBootTest
+public class CustomFieldServiceTests {
+    @Autowired
+    private CustomFieldController customFieldController;
+
+    @Test
+    void addCustomField() throws Exception {
+        CustomFieldDTO customFieldDTO = new CustomFieldDTO();
+        customFieldDTO.setName("相关度");
+        customFieldDTO.setProjectId(25);
+        customFieldDTO.setType(4);
+        customFieldDTO.setStatus(true);
+        customFieldDTO.setDescription("注释");
+        Response response = customFieldController.addCustomField(customFieldDTO);
+        Assert.assertEquals(200,Integer.parseInt(response.getCode().toString()));
+    }
+}