Kaynağa Gözat

处理部门项目树业务

lixing 4 yıl önce
ebeveyn
işleme
8d66980384

+ 17 - 29
fm-person/src/main/java/com/persagy/fm/department/controller/DepartmentController.java

@@ -10,10 +10,14 @@ import com.persagy.fm.department.model.vo.ManagerVO;
 import com.persagy.fm.department.model.vo.ResponseDepartmentItemVO;
 import com.persagy.fm.department.model.vo.ResponseDepartmentListItemVO;
 import com.persagy.fm.department.model.vo.ResponseDepartmentTreeItemVO;
+import com.persagy.fm.department.service.IDepTranslator;
 import com.persagy.fm.department.service.IDepTreeService;
 import com.persagy.fm.department.service.IDepartmentService;
 import com.persagy.fm.department.utils.DepDataUtil;
+import com.persagy.fm.depproject.model.DepProject;
+import com.persagy.fm.depproject.model.dto.QueryDepProjectDTO;
 import com.persagy.fm.depproject.service.IDepProjectService;
+import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
 import com.persagy.fm.translate.model.Trans;
 import com.persagy.fm.translate.model.TransType;
@@ -53,6 +57,8 @@ public class DepartmentController {
     private IDepTreeService depTreeService;
     @Autowired
     private IDepProjectService depProjectService;
+    @Autowired
+    private IDepTranslator depTranslator;
 
     @ApiOperation(value = "创建部门")
     @PostMapping("/create")
@@ -64,42 +70,24 @@ public class DepartmentController {
 
     @ApiOperation(value = "部门详情")
     @PostMapping("/get")
-    // TODO: 2021/3/24 使用翻译器
-//    @Transes({
-//            @Trans(source = "personNameTranslator",
-//                    type = TransType.SERVICE, batch = true,
-//                    parameter = "managerIds", target = "managerObjs"),
-////            @Trans(source = "com.persagy.fm.person.service.IPersonTransBatchHandler",
-////                    type = TransType.SERVICE, result = "name", batch = true,
-////                    condition = "id", parameter = "projectIds", target = "projectsShowName")
-//    })
+    @Trans(type = TransType.DB, source = "department", parameter = "parentId", target = "parentShowName")
     public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
             @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
         Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
         ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
-        List<ManagerVO> test = test(department.getManagers());
-        responseDepartmentItemVO.setManagerObjs(test);
+        // 给部门负责人赋值
+        String managers = department.getManagers();
+        responseDepartmentItemVO.setManagers(depTranslator.getManagerVOList(managers));
+        // 给项目赋值
+        QueryDepProjectDTO queryDepProjectDTO = new QueryDepProjectDTO();
+        queryDepProjectDTO.setDepId(department.getId());
+        List<DepProject> depProjectList = depProjectService.queryDepProjectList(queryDepProjectDTO);
+        List<String> projectIds = depProjectList.stream().
+                map(DepProject::getProjectId).collect(Collectors.toList());
+        responseDepartmentItemVO.setProjects(depTranslator.getProjectVOList(projectIds));
         return ResultHelper.single(responseDepartmentItemVO);
     }
 
-    @Trans(source = "personNameTranslator",
-            type = TransType.SERVICE, batch = true,
-            parameter = "id", target = "name")
-    private List<ManagerVO> test(String manager) {
-        String[] ids = manager.split(",");
-        if (ids.length == 0) {
-            return null;
-        }
-
-        List<ManagerVO> result = Lists.newArrayList();
-        for (String id : ids) {
-            ManagerVO managerVO = new ManagerVO();
-            managerVO.setId(Long.valueOf(id));
-            result.add(managerVO);
-        }
-        return result;
-    }
-
     @ApiOperation(value = "更新部门")
     @PostMapping("/update")
     public CommonResult<FmResponseUpsertVO> updateDepartment(

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/jms/DepJmsConfig.java

@@ -38,7 +38,7 @@ public class DepJmsConfig {
 
     @Bean
     public TopicExchange depSaasExchange() {
-        return new TopicExchange(depSaasExchange, true, true);
+        return new TopicExchange(depSaasExchange, true, false);
     }
 
     @Bean

+ 4 - 0
fm-person/src/main/java/com/persagy/fm/department/jms/handler/GroupMsgHandler.java

@@ -17,6 +17,7 @@ import com.rabbitmq.client.Channel;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
 
 import java.io.IOException;
 
@@ -26,6 +27,7 @@ import java.io.IOException;
  * @author lixing
  * @version V1.0 2021/3/18 6:18 下午
  **/
+@Configuration
 public class GroupMsgHandler extends MsgBaseHandler {
     @Autowired
     IDepartmentService departmentService;
@@ -62,6 +64,8 @@ public class GroupMsgHandler extends MsgBaseHandler {
             try {
                 // 将消费失败的消息移除消息队列,避免重复消费
                 channel.basicReject(msg.getMessageProperties().getDeliveryTag(),false);
+                throw new BusinessException(ResponseCode.C0001.getCode(),
+                        "部门消息消费失败," + e.getMessage());
             } catch (IOException ex) {
                 throw new BusinessException(ResponseCode.C0001.getCode(),
                         "部门消息从队列中移除失败," + ex.getMessage());

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/department/model/ConvertDepartmentTool.java

@@ -31,7 +31,7 @@ public interface ConvertDepartmentTool {
      * @author lixing
      * @version V1.0 2021-03-11 15:09:19
      */
-    @Mapping(source = "managers", target = "managerIds")
+    @Mapping(source = "managers", target = "managers", ignore = true)
     ResponseDepartmentItemVO convert2ResponseItemDTO(Department department);
 
     /**

+ 4 - 10
fm-person/src/main/java/com/persagy/fm/department/model/vo/ManagerVO.java

@@ -1,8 +1,10 @@
 package com.persagy.fm.department.model.vo;
 
+import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.translate.model.Trans;
 import com.persagy.fm.translate.model.TransType;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 部门负责人
@@ -10,15 +12,7 @@ import lombok.Data;
  * @author lixing
  * @version V1.0 2021/3/27 5:18 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class ManagerVO {
-    private Long id;
-    private String name;
-
-    @Trans(source = "personNameTranslator",
-            type = TransType.SERVICE, batch = true,
-            parameter = "id", target = "name")
-    public String getName() {
-        return name;
-    }
+public class ManagerVO extends SimpleObjVO {
 }

+ 8 - 8
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.department.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -19,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentItemVO {
     @ApiModelProperty("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     @ApiModelProperty("部门名称")
@@ -30,14 +33,14 @@ public class ResponseDepartmentItemVO {
     @ApiModelProperty("上级部门id")
     private String parentId;
 
+    @ApiModelProperty("上级部门名称")
+    private String parentShowName;
+
     @ApiModelProperty("数据来源")
     private String resourceFrom;
 
-    @ApiModelProperty("负责人id")
-    private String managerIds;
-
     @ApiModelProperty("负责人列表")
-    private List<ManagerVO> managerObjs;
+    private List<ManagerVO> managers;
 
     @ApiModelProperty("部门全路径")
     private String fullPath;
@@ -61,8 +64,5 @@ public class ResponseDepartmentItemVO {
     private Date modifiedTime;
 
     @ApiModelProperty(value="关联的项目")
-    private List<String> projectIds;
-
-    @ApiModelProperty(value="关联的项目名称")
-    private List<String> projectsShowName;
+    private List<ProjectVO> projects;
 }

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.department.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,6 +19,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentListItemVO {
     @ApiModelProperty("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     @ApiModelProperty("部门名称")

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/department/model/vo/ResponseDepartmentTreeItemVO.java

@@ -1,6 +1,8 @@
 package com.persagy.fm.department.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,6 +18,7 @@ import java.util.List;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponseDepartmentTreeItemVO {
     @ApiModelProperty("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     @ApiModelProperty("部门名称")

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/jms/PersonJmsConfig.java

@@ -38,7 +38,7 @@ public class PersonJmsConfig {
 
     @Bean
     public TopicExchange personSaasExchange() {
-        return new TopicExchange(personSaasExchange);
+        return new TopicExchange(personSaasExchange, true, false);
     }
 
     @Bean

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponsePersonItemVO {
     @ApiModelProperty("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     @ApiModelProperty("姓名")

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/person/model/vo/ResponsePersonListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.person.model.vo;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,6 +18,7 @@ import java.util.List;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ResponsePersonListItemVO {
     @ApiModelProperty("id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
     @ApiModelProperty("姓名")

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonNameTranslator.java

@@ -67,7 +67,7 @@ public class PersonNameTranslator implements ITranslator {
             List<ManagerVO> managerVOList = Lists.newArrayList();
             for (String id : ids) {
                 ManagerVO managerVO = new ManagerVO();
-                managerVO.setId(Long.valueOf(id));
+                managerVO.setId(id);
                 managerVO.setName(idMap.get(id).toString());
                 managerVOList.add(managerVO);
             }

+ 12 - 0
fm-person/src/main/java/com/persagy/fm/saas/project/client/SaasProjectClient.java

@@ -6,8 +6,10 @@ import com.persagy.fm.common.response.FmResponseItem;
 import com.persagy.fm.saas.project.client.fallback.SaasProjectClientFallbackFactory;
 import com.persagy.fm.saas.project.constant.FeignClientNameConstants;
 import com.persagy.fm.saas.project.model.SaasArea;
+import com.persagy.fm.saas.project.model.SaasProject;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaDTO;
 import com.persagy.fm.saas.project.model.dto.QuerySaasAreaProjectTreeDTO;
+import com.persagy.fm.saas.project.model.dto.QuerySaasProjectDTO;
 import com.persagy.fm.saas.project.model.vo.SaasAreaProjectTreeVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -47,4 +49,14 @@ public interface SaasProjectClient {
     FmResponseItem<SaasAreaProjectTreeVO> queryAreaProjectTree(
              @RequestBody QuerySaasAreaProjectTreeDTO querySaasAreaProjectTreeDTO);
 
+    /**
+     * 查询项目列表
+     *
+     * @param querySaasProjectDTO 查询项目入参
+     * @return 项目列表
+     * @author lixing
+     * @version V1.0 2021/3/29 3:06 下午
+     */
+    @PostMapping("/project/querySaasProjectList")
+    FmResponseContent<List<SaasProject>> queryProjectList(QuerySaasProjectDTO querySaasProjectDTO);
 }