浏览代码

1.新增AssetsNodeHandler重写
2.WorkFlowServiceImpl新增资产业务的判断
3.资产业务调整相关接口

GouGengquan 1 年之前
父节点
当前提交
69361ae4e6

+ 17 - 3
biz-base/src/main/java/com/dayou/controller/AssetsController.java

@@ -2,8 +2,11 @@ package com.dayou.controller;
 
 import com.dayou.dto.AssetsPrincipalMembersDTO;
 import com.dayou.dto.AssetsSelectDTO;
+import com.dayou.dto.TaskRecordDTO;
 import com.dayou.dto.WorkNodeCommit;
+import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsVO;
+import com.dayou.workflow.annotation.FinishTask;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -104,12 +107,23 @@ public class AssetsController extends BaseController {
 
     /**
      * 修改资产业务订单项目负责人与项目成员
-     * @param assetsPrincipalMembersDTO 修改dto
+     * @param taskRecordDTO 修改dto
      * @return RestResponse<Boolean>
      */
+    @FinishTask
     @PutMapping("/updatePrincipalAndMembers")
-    public RestResponse<Boolean> updatePrincipalAndMembers(@RequestBody AssetsPrincipalMembersDTO assetsPrincipalMembersDTO) {
-        return RestResponse.data(assetsService.updatePrincipalAndMembers(assetsPrincipalMembersDTO));
+    public RestResponse<Boolean> updatePrincipalAndMembers(@RequestBody TaskRecordDTO<AssetsPrincipalMembersDTO> taskRecordDTO) {
+        return RestResponse.data(assetsService.updatePrincipalAndMembers(taskRecordDTO));
+    }
+
+    /**
+     * 根据业务id获取资产业务款项信息
+     * @param id 业务id
+     * @return RestResponse<AssetsOrderFundInvoiceVO>
+     */
+    @GetMapping("/getOrderFundInvoiceById/{id}")
+    public RestResponse<AssetsOrderFundInvoiceVO> getOrderFundInvoiceById(@PathVariable Long id) {
+        return RestResponse.data(assetsService.getOrderFundInvoiceById(id));
     }
 }
 

+ 8 - 0
dao/src/main/java/com/dayou/mapper/AssetsMapper.java

@@ -5,6 +5,7 @@ import com.dayou.dto.AssetsSelectDTO;
 import com.dayou.entity.Assets;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.entity.User;
+import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -40,4 +41,11 @@ public interface AssetsMapper extends CustomBaseMapper<Assets> {
      * @return AssetsVO
      */
     AssetsVO getAssetsDetailById(@Param("id") Long id);
+
+    /**
+     * 根据业务id获取资产业务款项信息
+     * @param id 业务id
+     * @return AssetsOrderFundInvoiceVO
+     */
+    AssetsOrderFundInvoiceVO getOrderFundInvoiceById(@Param("id") Long id);
 }

+ 31 - 8
dao/src/main/resources/mapper/AssetsMapper.xml

@@ -64,9 +64,11 @@
         #查询项目负责人
         (SELECT name FROM user WHERE id = assets.principal_id) AS principalName,
         #查询业务来源(即子级客户)
-        (SELECT customer_company.name
-        FROM customer_company
-        WHERE customer_company.id = clientele_sub_id) AS customerSubName
+        (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
+        nodeInfo.businessId,
+        nodeInfo.currentNodeName,
+        nodeInfo.currentNodeCode,
+        nodeInfo.handlerName
         FROM assets
         LEFT JOIN assets_production AS production ON production.business_id = assets.id
         LEFT JOIN user ON user.id = assets.principal_id
@@ -130,7 +132,7 @@
         bailor_contact_name,
         bailor_contact_tel,
         assets.created,
-        target.estimated_value,
+        ( SELECT SUM(estimated_value) FROM assets_evaluation_target WHERE assets_evaluation_target.assets_id = assets.id ) AS estimated_value,
         fund.should_amount,
         fund.real_amount,
         fund.discount,
@@ -141,14 +143,15 @@
         #查询项目负责人
         (SELECT name FROM user WHERE id = assets.principal_id) AS principalName,
         #查询业务来源(即子级客户)
-        (SELECT customer_company.name
-        FROM customer_company
-        WHERE customer_company.id = clientele_sub_id) AS customerSubName
+        (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
+        nodeInfo.businessId,
+        nodeInfo.currentNodeName,
+        nodeInfo.currentNodeCode,
+        nodeInfo.handlerName
         FROM assets
         LEFT JOIN assets_production AS production ON production.business_id = assets.id
         LEFT JOIN user ON user.id = assets.principal_id
         LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
-        LEFT JOIN assets_evaluation_target AS target ON target.assets_id = assets.id
         LEFT JOIN order_fund AS fund ON fund.business_id = assets.id
         LEFT JOIN production_fund AS pFund ON pFund.business_id = assets.id
         LEFT JOIN finance_invoice AS invoice ON pFund.order_fund_id = fund.id
@@ -169,6 +172,7 @@
         AND record.instance_id = nodeInstance.id
         ) AS nodeInfo ON nodeInfo.businessId = assets.id
         WHERE assets.deleted = 0
+        AND assets.client_manager_id = #{assetsSelectDTO.clientManagerId}
         #送达状态查询
         <if test="assetsSelectDTO != null and assetsSelectDTO.delivery != null">
             AND production.delivery = #{assetsSelectDTO.delivery}
@@ -244,4 +248,23 @@
         </where>
     </select>
 
+    <!--根据业务id获取资产业务款项信息-->
+    <select id="getOrderFundInvoiceById" resultType="com.dayou.vo.AssetsOrderFundInvoiceVO">
+        SELECT order_fund.id,
+               business_id,
+               should_amount,
+               order_fund.real_amount,
+               title,
+               type,
+               tax_no,
+               bank_name,
+               bank_account,
+               bank_address,
+               bank_tel
+        FROM order_fund
+        LEFT JOIN finance_invoice ON finance_invoice.order_fund_id = order_fund.id
+        WHERE order_fund.business_id = #{id}
+        AND order_fund.deleted = 0
+    </select>
+
 </mapper>

+ 2 - 0
domain/src/main/java/com/dayou/dto/AssetsPrincipalMembersDTO.java

@@ -3,6 +3,8 @@ package com.dayou.dto;
 import com.dayou.annotation.ExportCell;
 import com.dayou.annotation.ImportCell;
 import com.dayou.common.BaseEntity;
+import com.github.liangbaika.validate.annations.AbcValidate;
+import com.github.liangbaika.validate.enums.Check;
 import lombok.Data;
 
 @Data

+ 60 - 0
domain/src/main/java/com/dayou/vo/AssetsOrderFundInvoiceVO.java

@@ -0,0 +1,60 @@
+package com.dayou.vo;
+
+import com.dayou.common.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AssetsOrderFundInvoiceVO extends BaseEntity {
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
+    /**
+     * 订单应收款
+     */
+    private BigDecimal shouldAmount;
+
+    /**
+     * 订单实收款
+     */
+    private BigDecimal realAmount;
+
+    /**
+     * 发票抬头
+     */
+    private String title;
+
+    /**
+     * 发票类型
+     */
+    private String type;
+
+    /**
+     * 税号
+     */
+    private String taxNo;
+
+    /**
+     * 开户银行
+     */
+    private String bankName;
+
+    /**
+     * 银行账号
+     */
+    private String bankAccount;
+
+    /**
+     * 银行地址
+     */
+    private String bankAddress;
+
+    /**
+     * 银行电话
+     */
+    private String bankTel;
+}

+ 11 - 2
service/src/main/java/com/dayou/service/IAssetsService.java

@@ -1,10 +1,12 @@
 package com.dayou.service;
 import com.dayou.dto.AssetsPrincipalMembersDTO;
 import com.dayou.dto.AssetsSelectDTO;
+import com.dayou.dto.TaskRecordDTO;
 import com.dayou.dto.WorkNodeCommit;
 import com.dayou.entity.Assets;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsVO;
 
 /**
@@ -49,10 +51,17 @@ public interface IAssetsService extends IService<Assets> {
 
         /**
          * 修改资产业务订单项目负责人与项目成员
-         * @param assetsPrincipalMembersDTO 修改dto
+         * @param taskRecordDTO 修改dto
          * @return Boolean
          */
-        Boolean updatePrincipalAndMembers(AssetsPrincipalMembersDTO assetsPrincipalMembersDTO);
+        Boolean updatePrincipalAndMembers(TaskRecordDTO<AssetsPrincipalMembersDTO> taskRecordDTO);
+
+        /**
+         * 根据业务id获取资产业务款项信息
+         * @param id 业务id
+         * @return AssetsOrderFundInvoiceVO
+         */
+        AssetsOrderFundInvoiceVO getOrderFundInvoiceById(Long id);
 
         Boolean update(Assets assets);
 

+ 17 - 3
service/src/main/java/com/dayou/service/impl/AssetsServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.AssetsPrincipalMembersDTO;
 import com.dayou.dto.AssetsSelectDTO;
+import com.dayou.dto.TaskRecordDTO;
 import com.dayou.dto.WorkNodeCommit;
 import com.dayou.entity.Assets;
 import com.dayou.enums.MainBusinessEnum;
@@ -13,7 +14,9 @@ import com.dayou.service.IAssetsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.service.IBusinessNumberService;
 import com.dayou.service.workflow.IWorkFlowService;
+import com.dayou.vo.AssetsOrderFundInvoiceVO;
 import com.dayou.vo.AssetsVO;
+import com.dayou.workflow.annotation.FinishTask;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -85,16 +88,17 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
         //新增订单信息
         this.save(assets);
         //发起流程
-        return workFlowService.openingOrder(MainBusinessEnum.ASSET_BUSINESS,assets.getId(),assets.getOrderId(),assets.getRemark());
+        return workFlowService.openingOrder(MainBusinessEnum.ASSET_BUSINESS,assets.getId(),null,assets.getRemark());
     }
 
     /**
      * 修改资产业务订单项目负责人与项目成员
-     * @param assetsPrincipalMembersDTO 修改dto
+     * @param taskRecordDTO 修改dto
      * @return Boolean
      */
     @Override
-    public Boolean updatePrincipalAndMembers(AssetsPrincipalMembersDTO assetsPrincipalMembersDTO) {
+    public Boolean updatePrincipalAndMembers(TaskRecordDTO<AssetsPrincipalMembersDTO> taskRecordDTO) {
+        AssetsPrincipalMembersDTO assetsPrincipalMembersDTO = taskRecordDTO.getTaskData();
         if (ObjectUtil.isNull(assetsPrincipalMembersDTO.getPrincipalId()) && ObjectUtil.isNull(assetsPrincipalMembersDTO.getMembers())){
             ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"项目负责人和项目参与人员不能为空。");
         }
@@ -102,6 +106,16 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
                 .eq(BaseEntity::getId, assetsPrincipalMembersDTO.getId()));
     }
 
+    /**
+     * 根据业务id获取资产业务款项信息
+     * @param id 业务id
+     * @return AssetsOrderFundInvoiceVO
+     */
+    @Override
+    public AssetsOrderFundInvoiceVO getOrderFundInvoiceById(Long id) {
+        return assetsMapper.getOrderFundInvoiceById(id);
+    }
+
     @Override
     public Boolean update(Assets assets){
         return  this.updateById(assets);

+ 8 - 2
service/src/main/java/com/dayou/service/workflow/WorkFlowServiceImpl.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.mapper.WorkTaskRecordMapper;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.NameCodeVO;
+import com.dayou.workflow.handler.AssetsNodeHandler;
 import com.dayou.workflow.handler.MajorNodeHandler;
 import com.dayou.workflow.config.WorkNodeProcessable;
 import com.dayou.workflow.handler.PersonalNodeHandler;
@@ -29,8 +30,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static com.dayou.enums.MainBusinessEnum.MAJOR_BUSINESS;
-import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
+import static com.dayou.enums.MainBusinessEnum.*;
 import static com.dayou.enums.workflow.NodeLogEnum.*;
 
 /**
@@ -54,6 +54,9 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
     private PersonalNodeHandler personalNodeHandler;
 
     @Autowired
+    private AssetsNodeHandler assetsNodeHandler;
+
+    @Autowired
     private IWorkNodeService workNodeService;
 
     @Autowired
@@ -122,6 +125,9 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
         if (businessEnum.equals(PERSONAL_BUSINESS)){
             return handleByState(personalNodeHandler,workNodeCommit);
         }
+        if (businessEnum.equals(ASSET_BUSINESS)){
+            return handleByState(assetsNodeHandler,workNodeCommit);
+        }
         return Boolean.FALSE;
     }
 

+ 180 - 0
service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java

@@ -0,0 +1,180 @@
+package com.dayou.workflow.handler;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.dayou.common.BaseEntity;
+import com.dayou.dto.HandlerPermissionDTO;
+import com.dayou.dto.WorkNodeCommit;
+import com.dayou.dto.WorkNodeDTO;
+import com.dayou.entity.*;
+import com.dayou.enums.MainBusinessEnum;
+import com.dayou.enums.ProductionEnum;
+import com.dayou.enums.workflow.CallbackEnum;
+import com.dayou.enums.workflow.HandlerPermissionEnum;
+import com.dayou.enums.workflow.WorkflowNodeEnum;
+import com.dayou.mapper.AssetsMapper;
+import com.dayou.mapper.DepartmentMapper;
+import com.dayou.mapper.WorkFlowNodeInstanceMapper;
+import com.dayou.service.IUserPostService;
+import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
+import com.dayou.service.workflow.IWorkNodeService;
+import com.dayou.workflow.config.WorkNodeProcessable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import static com.dayou.enums.workflow.NodeStateEnum.SKIP;
+import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
+
+@Component
+public class AssetsNodeHandler extends WorkNodeProcessable {
+
+    @Autowired
+    private AssetsMapper assetsMapper;
+
+    @Autowired
+    private DepartmentMapper departmentMapper;
+
+    @Autowired
+    private IUserPostService userPostService;
+
+    @Autowired
+    private IWorkNodeService workNodeService;
+
+    @Autowired
+    private WorkFlowNodeInstanceMapper workFlowNodeInstanceMapper;
+
+    @Autowired
+    private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
+
+    @Override
+    public boolean forward(WorkNodeCommit workNodeCommit) {
+        WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
+        WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
+        if (nextWorkNode!=null){
+            String ifVerify = currentInstanceNode.getVerify();
+            if (StrUtil.isNotEmpty(ifVerify)){
+                CallbackEnum callback = CallbackEnum.valueOf(ifVerify);
+                if (callback !=null){
+                    //根据callback 确定具体的业务数据
+                    //获取产品类型
+                    List<ProductionEnum> production = workNodeCommit.getProduction();
+                    switch (callback){
+                        case CHECK_PRODUCTION_CHECK:
+                            nextWorkNode = workNodeService.getNextWorkNodeByCheckState(currentInstanceNode.getFlowId(),currentInstanceNode.getNodeCode(),
+                                    workNodeCommit.getDoSecondCheck(),workNodeCommit.getDoThirdCheck());
+                            break;
+                        case CHECK_PRODUCTION_TYPE:
+                            //1. 获取业务上出具的产品类型。
+                            //2.根据出具的产品类型 确定需要哪些节点
+                            Map<String,List<WorkflowNodeEnum>> majorNecessaryNodes = CallbackEnum.NecessaryNode.getByProduction(MainBusinessEnum.MAJOR_BUSINESS.name(),
+                                    production);
+                            nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(),MainBusinessEnum.MAJOR_BUSINESS,currentInstanceNode.getNodeCode(), majorNecessaryNodes);
+                            break;
+                        case CHECK_PRODUCTION_FUND:
+                            if (workNodeCommit.getIfProductionFund()){
+                                nextWorkNode = workNodeService.getNextWorkNode(nextWorkNode.getFlowId(), nextWorkNode.getId());
+                            }
+                            break;
+                    }
+                }
+            }
+            if (CollectionUtil.isNotEmpty(workNodeCommit.getReportNos())){
+
+                //主流程分支
+                String code = workNodeService.getOne(new LambdaQueryWrapper<WorkNode>()
+                        .select(WorkNode::getCode)
+                        .eq(BaseEntity::getId, currentInstanceNode.getNodeId()).eq(BaseEntity::getDeleted, Boolean.FALSE)).getCode();
+                WorkflowNodeEnum workflowNodeEnum = WorkflowNodeEnum.valueOf(code);
+
+                if (workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_STATEMENT)){
+                    for (String businessSubId :workNodeCommit.getReportNos()){
+                        addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),businessSubId,null);
+                    }
+                }
+                else if(workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_REPORT) || workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_LETTER)){
+                    for (String businessMinId :workNodeCommit.getReportNos()){
+                        addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),businessMinId);
+                    }
+                }else {
+                    addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
+                }
+            }
+            else {
+                addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
+            }
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
+    @Override
+    public boolean skip(WorkNodeCommit workNodeCommit){
+        WorkFlowNodeInstance instanceNode = workFlowNodeInstanceService.getById(workNodeCommit.getInstanceNodeId());
+        workFlowNodeInstanceService.update(new LambdaUpdateWrapper<WorkFlowNodeInstance>().set(WorkFlowNodeInstance::getState,SKIP)
+                .set(WorkFlowNodeInstance::getComment,workNodeCommit.getComments())
+                .eq(WorkFlowNodeInstance::getId,workNodeCommit.getInstanceNodeId()));
+        //添加日志
+        return addWorkflowLog(workNodeCommit,instanceNode);
+    }
+
+    @Override
+    public boolean goBack(WorkNodeCommit commit){
+        Long instanceNodeId = commit.getInstanceNodeId();
+        WorkFlowNodeInstance currentNode = workFlowNodeInstanceMapper.getInstanceNodeInfoById(instanceNodeId);
+        //如果是撰写节点(意见书,报告,复评函)退回。需删除产品业务信息
+        List<String> writeNodes = Arrays.asList(new String[]{WRITE_STATEMENT.name(), WRITE_REPORT.name(), WRITE_LETTER.name()});
+        if (writeNodes.contains(currentNode.getNodeCode()) && commit.getCleanReportNo()!=null && commit.getCleanReportNo()){
+            //是否取号?
+//            List<String> reportNos =  majorTargetMapper.getSubReportNo(currentNode.getBusinessId());
+//            if (CollectionUtil.isNotEmpty(reportNos)){
+//                //清除子号
+//                majorTargetMapper.cleanSubReportNo(currentNode.getBusinessId());
+//                //清除产品信息
+//                majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>().eq(MajorProduction::getMajorId,currentNode.getBusinessId()));
+//            }
+        }
+        return super.goBack(commit);
+    }
+
+    /**
+     * 选择节点处理人
+     * @param instanceNode 节点实列
+     * @param handlerPermissionDTO
+     * @return Long
+     */
+    @Override
+    public Long searchHandlerId(WorkFlowNodeInstance instanceNode, HandlerPermissionDTO handlerPermissionDTO){
+        HandlerPermissionEnum handlerPermissionEnum = handlerPermissionDTO.getName();
+        Assets assets = assetsMapper.selectOne(new LambdaQueryWrapper<Assets>().select(Assets::getClientManagerId)
+                .eq(BaseEntity::getId, instanceNode.getBusinessId()));
+        switch (handlerPermissionEnum){
+            case EMPLOYEE:
+                return handlerPermissionDTO.getPowerId();
+            case POST:
+                Long handlerId = userPostService.getUniqueHandlerByPostForWorkNode(handlerPermissionDTO.getPowerId());
+                return handlerId==null?
+                        departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(BaseEntity::getId, assets.getDepartmentId())).getLeaderId()
+                        :handlerId;
+            case DEPARTMENT_LEADER:
+                return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(BaseEntity::getId, assets.getDepartmentId())).getLeaderId();
+            case CLIENT_MANAGER:
+                return assets.getClientManagerId();
+            case INITIATOR:
+                return assets.getClientManagerId();
+            case PRINCIPAL:
+                return assets.getPrincipalId();
+            case SYSTEM:
+                //暂无程序处理逻辑
+                return 0L;
+            default:
+                //实在找不到审批人 交由部门领导处理
+                return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(BaseEntity::getId, assets.getDepartmentId())).getLeaderId();
+        }
+    }
+}