Parcourir la source

1.资产业务评估人员绩效提成申报流程开发
2.新增接口assetsMarketDeclarePage资产业务市场人员提成申报列表
3.资产业务客户经理(市场人员)绩效提成申报流程开发

GouGengquan il y a 1 an
Parent
commit
48d61cb21f

+ 9 - 1
biz-base/src/main/java/com/dayou/controller/CommissionDeclareController.java

@@ -100,7 +100,7 @@ public class CommissionDeclareController extends BaseController {
     }
 
     /**
-     * 资产业务评估人员提成申报列表
+     * 资产业务新增绩效分配申报
      */
     @GetMapping("/assets/evaluate")
     public RestResponse<Page<CommissionDeclareVO>> assetsEvaluateDeclarePage(CommissionDeclareVO commissionDeclare, Page page){
@@ -109,6 +109,14 @@ public class CommissionDeclareController extends BaseController {
     }
 
     /**
+     * 资产业务市场人员提成申报列表
+     */
+    @GetMapping("/assets/market")
+    public RestResponse<Page<CommissionDeclareVO>> assetsMarketDeclarePage(Page page, CommissionDeclareVO commissionDeclare) {
+        return RestResponse.data(commissionDeclareService.assetsMarketDeclarePage(page, commissionDeclare));
+    }
+
+    /**
      * 资产业务新增评估人员绩效分配申报
      * @param declareDTO dto
      * @return RestResponse<Boolean>

+ 11 - 0
dao/src/main/java/com/dayou/mapper/BusinessPerformanceDistributionMapper.java

@@ -1,7 +1,11 @@
 package com.dayou.mapper;
 
+import com.dayou.dto.UserShareRate;
 import com.dayou.entity.BusinessPerformanceDistribution;
 import com.dayou.dao.CustomBaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,11 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface BusinessPerformanceDistributionMapper extends CustomBaseMapper<BusinessPerformanceDistribution> {
 
+    /**
+     * 根据申报id获取绩效比列分配集合
+     * @param declareId 申报id
+     * @return List<UserShareRate>
+     */
+    List<UserShareRate> alloAssetsDistributionDeclareId(@Param("declareId") Long declareId);
+
 }

+ 9 - 0
dao/src/main/java/com/dayou/mapper/CommissionDeclareMapper.java

@@ -39,6 +39,15 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
     Page<CommissionDeclareVO> assetsEvaluateDeclarePage(Page page, @Param("declare")CommissionDeclareVO commissionDeclare, @Param("evaluateUserId")Long currentEvaluateUserId);
 
     /**
+     * 获取资产评估人员提成申报列表
+     * @param page 分页参数
+     * @param commissionDeclare 查询参数
+     * @param marketUserId 客户经理id
+     * @return Page<CommissionDeclareVO>
+     */
+    Page<CommissionDeclareVO> assetsMarketDeclarePage(Page page, @Param("declare") CommissionDeclareVO commissionDeclare,@Param("marketUserId") Long marketUserId);
+
+    /**
      * 资产待办绩效申报列表
      * @param page 分页参数
      * @param checkVO 查询参数

+ 9 - 0
dao/src/main/resources/mapper/BusinessPerformanceDistributionMapper.xml

@@ -23,4 +23,13 @@
         business_id, business_type, report_no, performance_distribution
     </sql>
 
+    <!--根据申报id获取绩效比列分配集合-->
+    <select id="alloAssetsDistributionDeclareId" resultType="com.dayou.dto.UserShareRate">
+        SELECT member_id AS userId, member_type AS memberType, performance_distribution AS rate, name
+        FROM business_performance_distribution, user
+        WHERE declare_id = #{declareId}
+        AND member_id = user.id
+        AND business_performance_distribution.deleted = 0
+    </select>
+
 </mapper>

+ 90 - 0
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -373,6 +373,96 @@
         order by bus.created DESC ,bus.orderCreated DESC
     </select>
 
+    <!--获取资产评估人员提成申报列表-->
+    <select id="assetsMarketDeclarePage" resultType="com.dayou.vo.CommissionDeclareVO">
+        SELECT
+        bus.*,
+        dd.NAME AS commissionType
+        FROM
+        (
+        SELECT
+        IFNULL( cd.id,( SELECT id FROM commission_declare WHERE deleted = 0 AND business_id = assets.businessId AND production_id IS NULL and declare_user_id =#{marketUserId}) ) id,
+        IFNULL( cd.commission_rate_id,( SELECT commission_rate_id FROM commission_declare WHERE deleted = 0 AND business_id = assets.businessId AND production_id IS NULL and declare_user_id =#{marketUserId} ) ) commission_rate_id,
+        IFNULL( cd.declare_result,( SELECT declare_result FROM commission_declare WHERE deleted = 0 AND business_id = assets.businessId AND production_id IS NULL and declare_user_id =#{marketUserId}) ) declare_result,
+        assets.*
+        FROM
+        (
+        SELECT
+        assets.id AS businessId,
+        ap.id AS productionId,
+        ifnull( ap.id, assets.id ) AS aId,
+        assets.NAME AS orderName,
+        assets.order_id,
+        assets.bailor_contact_name,
+        assets.bailor_contact_tel,
+        assets.bailor,
+        assets.created AS orderCreated,
+        u.NAME AS clientManager,
+        u1.NAME AS principal,
+        cc1.NAME AS clienteleName,
+        cc2.NAME AS clienteleSubName,
+        ap.production_no AS reportNo,
+        ap.created
+        FROM
+        assets
+        LEFT JOIN ( SELECT id, business_id, production_no, created FROM assets_production WHERE deleted = 0 ) ap ON assets.id = ap.business_id
+        LEFT JOIN USER u ON u.id = assets.client_manager_id
+        LEFT JOIN USER u1 ON u1.id = assets.principal_id
+        LEFT JOIN customer_company cc1 ON cc1.id = assets.clientele_id
+        LEFT JOIN customer_company cc2 ON cc2.id = assets.clientele_sub_id
+        WHERE
+        assets.deleted = 0
+        AND assets.client_manager_id = #{marketUserId}
+
+        ) assets
+        LEFT JOIN (
+        SELECT
+        id,
+        ifnull( production_id, business_id ) AS xId,
+        commission_rate_id,
+        declare_result
+        FROM
+        commission_declare
+        WHERE
+        deleted = 0
+        AND declare_user_id = #{marketUserId}) cd ON assets.aId = cd.xId) bus left join business_commission_rate bcr on
+        bus.commission_rate_id = bcr.id
+        LEFT JOIN dict_data dd ON dd.id = bcr.business_cate_id
+        <where>
+            <if test="declare!=null and declare.orderId!=null and declare.orderId!=''">
+                and bus.order_id like concat ('%',#{declare.orderId},'%')
+            </if>
+            <if test="declare!=null and declare.name!=null and declare.name!=''">
+                and (bus.orderName like concat ('%',#{declare.name},'%') or bus.name like concat ('%',#{declare.name},'%') )
+            </if>
+            <if test="declare!=null and declare.reportNo!=null and declare.reportNo!=''">
+                and bus.report_no like concat ('%',#{declare.reportNo},'%')
+            </if>
+            <if test="declare!=null and declare.commissionRateId!=null ">
+                and bus.commission_rate_id = #{declare.commissionRateId}
+            </if>
+            <if test="declare!=null and declare.declareType!=null and declare.declareType==true">
+                and bus.productionId is not null
+            </if>
+            <if test="declare!=null and declare.declareType!=null and declare.declareType==false">
+                and bus.productionId is null
+            </if>
+            <if test="declare!=null and declare.declareResult!=null and declare.declareResult=='待申报'">
+                and bus.declare_result is null
+            </if>
+            <if test="declare!=null and declare.declareResult!=null and declare.declareResult=='审核中'">
+                and bus.declare_result = #{declare.declareResult}
+            </if>
+            <if test="declare!=null and declare.declareResult!=null and declare.declareResult=='审核通过'">
+                and bus.declare_result = #{declare.declareResult}
+            </if>
+            <if test="declare!=null and declare.declareResult!=null and declare.declareResult=='审核拒绝'">
+                and bus.declare_result = #{declare.declareResult}
+            </if>
+        </where>
+        order by bus.created DESC ,bus.orderCreated DESC
+    </select>
+
     <!--资产待办绩效申报列表-->
     <select id="assetsTodoCheckPage" resultType="com.dayou.vo.CommissionDeclareTodoCheckVO">
         SELECT

+ 5 - 0
domain/src/main/java/com/dayou/dto/UserShareRate.java

@@ -23,4 +23,9 @@ public class UserShareRate {
 
     @AbcValidate(required = true,message = "提成比例不能为空",fun = Check.NotNull)
     private BigDecimal rate;
+
+    /**
+     * 绩效分配项目成员类型
+     */
+    private String memberType;
 }

+ 3 - 1
domain/src/main/java/com/dayou/enums/GlobalConfigEnum.java

@@ -15,7 +15,9 @@ public enum GlobalConfigEnum implements CodeMsgEnumInterface<String,CodeMsgEnumI
     LAND_RISK_FTL("LAND_RISK_FTL",LandRiskFTL.values(),"土规部社会稳定性风险评估报告模板配置"),
     LAND_CITY_PRICE("LAND_CITY_PRICE",LandCityPrice.values(),"土规部城区土地定级与基准地价技术报告模板配置"),
     COMMISSION_MAJOR_MARKET_DEPARTMENT("COMMISSION_MAJOR_MARKET_DEPARTMENT",CommissionMajorMarketDepartment.values(),"大中型市场提成部门"),
-    COMMISSION_MAJOR_EVALUATE_DEPARTMENT("COMMISSION_MAJOR_EVALUATE_DEPARTMENT",CommissionMajorEvaluateDepartment.values(),"大中型评估提成部门")
+    COMMISSION_MAJOR_EVALUATE_DEPARTMENT("COMMISSION_MAJOR_EVALUATE_DEPARTMENT",CommissionMajorEvaluateDepartment.values(),"大中型评估提成部门"),
+    COMMISSION_ASSET_MARKET_DEPARTMENT("COMMISSION_ASSET_MARKET_DEPARTMENT",CommissionMajorMarketDepartment.values(),"资产市场提成部门"),
+    COMMISSION_ASSET_EVALUATE_DEPARTMENT("COMMISSION_ASSET_EVALUATE_DEPARTMENT",CommissionMajorEvaluateDepartment.values(),"资产评估提成部门")
     ;
 
     private String key;

+ 2 - 2
domain/src/main/java/com/dayou/enums/MainBusinessEnum.java

@@ -21,9 +21,9 @@ public enum MainBusinessEnum implements CodeMsgEnumInterface<String,String> {
 
     COMMISSION_DECLARE_MAJOR_EVALUATE("COMMISSION_DECLARE_MAJOR_EVALUATE","大中型-提成申报-评估人员"),
 
-    COMMISSION_DECLARE_ASSET_MARKET("COMMISSION_DECLARE_MAJOR_MARKET","资产-提成申报-市场人员"),
+    COMMISSION_DECLARE_ASSET_MARKET("COMMISSION_DECLARE_ASSET_MARKET","资产-提成申报-市场人员"),
 
-    COMMISSION_DECLARE_ASSET_EVALUATE("COMMISSION_DECLARE_MAJOR_EVALUATE","资产-提成申报-评估人员"),
+    COMMISSION_DECLARE_ASSET_EVALUATE("COMMISSION_DECLARE_ASSET_EVALUATE","资产-提成申报-评估人员"),
 
     FINANCE_MANAGEMENT("FINANCE_MANAGEMENT","财务管理"),
 

+ 8 - 0
service/src/main/java/com/dayou/service/IBusinessPerformanceDistributionService.java

@@ -1,5 +1,6 @@
 package com.dayou.service;
 import com.dayou.dto.AssetsPerformanceDistributionAddDTO;
+import com.dayou.dto.UserShareRate;
 import com.dayou.entity.BusinessPerformanceDistribution;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -50,4 +51,11 @@ public interface IBusinessPerformanceDistributionService extends IService<Busine
          */
         Boolean updateAssetsPerformanceDistribution(AssetsPerformanceDistributionAddDTO dto);
 
+        /**
+         * 根据申报id获取绩效比列分配集合
+         * @param declareId 申报id
+         * @return List<UserShareRate>
+         */
+        List<UserShareRate> alloAssetsDistributionDeclareId(Long declareId);
+
 }

+ 9 - 1
service/src/main/java/com/dayou/service/ICommissionDeclareService.java

@@ -47,13 +47,21 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
     Page<CommissionDeclareVO> assetsEvaluateDeclarePage(Page page, CommissionDeclareVO commissionDeclare);
 
     /**
-     * 资产业务新增评估人员绩效分配申报
+     * 资产业务新增绩效分配申报
      * @param declareDTO dto
      * @return Long
      */
     Long assetsCommissionDeclare(CommissionDeclareDTO declareDTO);
 
     /**
+     * 获取资产评估人员提成申报列表
+     * @param page 分页参数
+     * @param commissionDeclare 查询参数
+     * @return Page<CommissionDeclareVO>
+     */
+    Page<CommissionDeclareVO> assetsMarketDeclarePage(Page page, CommissionDeclareVO commissionDeclare);
+
+    /**
      * 资产待办绩效申报列表
      * @param page 分页参数
      * @param checkVO 查询参数

+ 15 - 0
service/src/main/java/com/dayou/service/impl/BusinessPerformanceDistributionServiceImpl.java

@@ -2,11 +2,13 @@ package com.dayou.service.impl;
 
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.AssetsPerformanceDistributionAddDTO;
+import com.dayou.dto.UserShareRate;
 import com.dayou.entity.BusinessPerformanceDistribution;
 import com.dayou.entity.BusinessProductionPerformance;
 import com.dayou.mapper.BusinessPerformanceDistributionMapper;
 import com.dayou.service.IBusinessPerformanceDistributionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -39,6 +41,9 @@ import com.dayou.enums.BatchTaskTypeEnum;
 public class BusinessPerformanceDistributionServiceImpl extends ServiceImpl<BusinessPerformanceDistributionMapper, BusinessPerformanceDistribution> implements IBusinessPerformanceDistributionService {
 
 
+    @Autowired
+    private BusinessPerformanceDistributionMapper businessPerformanceDistributionMapper;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<BusinessPerformanceDistribution> selectPage(Page page,BusinessPerformanceDistribution businessPerformanceDistribution){
@@ -119,4 +124,14 @@ public class BusinessPerformanceDistributionServiceImpl extends ServiceImpl<Busi
     public Boolean updateAssetsPerformanceDistribution(AssetsPerformanceDistributionAddDTO dto) {
         return this.updateBatchById(dto.getDistributionList());
     }
+
+    /**
+     * 根据申报id获取绩效比列分配集合
+     * @param declareId 申报id
+     * @return List<UserShareRate>
+     */
+    @Override
+    public List<UserShareRate> alloAssetsDistributionDeclareId(Long declareId) {
+        return businessPerformanceDistributionMapper.alloAssetsDistributionDeclareId(declareId);
+    }
 }

+ 43 - 3
service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java

@@ -30,8 +30,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static com.dayou.enums.MainBusinessEnum.COMMISSION_DECLARE_MAJOR_EVALUATE;
-import static com.dayou.enums.MainBusinessEnum.COMMISSION_DECLARE_MAJOR_MARKET;
+import static com.dayou.enums.MainBusinessEnum.*;
 import static com.dayou.message.MessageTypeEnum.MAJOR_DECLARE_REMIND;
 
 
@@ -63,6 +62,12 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     private IMajorService majorService;
 
     @Autowired
+    private IAssetsService assetsService;
+
+    @Autowired
+    private IAssetsProductionService assetsProductionService;
+
+    @Autowired
     private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
 
     @Autowired
@@ -150,6 +155,29 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
             commissionDeclareDetailVO.setUserShareRates(rates);
         }
 
+        // 获取资产申报信息
+        if (declare.getBusinessType().equals(MainBusinessEnum.ASSET_BUSINESS.name())){
+            List<MainBusinessEnum> assetsDeclareEnums = Arrays.asList(COMMISSION_DECLARE_ASSET_MARKET, COMMISSION_DECLARE_ASSET_EVALUATE);
+            List<WorkFlowNodeInstance> instances = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>().eq(WorkFlowNodeInstance::getBusinessId, id)
+                    .in(WorkFlowNodeInstance::getBusinessType, assetsDeclareEnums));
+            List<String> remarks = instances.stream().map(WorkFlowNodeInstance::getComment).collect(Collectors.toList());
+            commissionDeclareDetailVO.setRemarks(remarks);
+            if (declare.getBusinessId()!=null){
+                Assets order = assetsService.getOne(new LambdaQueryWrapper<Assets>().select(Assets::getOrderId, Assets::getName).eq(BaseEntity::getId, declare.getBusinessId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+                commissionDeclareDetailVO.setOrderId(order.getOrderId());
+                commissionDeclareDetailVO.setName(order.getName());
+            }
+            if (declare.getProductionId()!=null){
+                AssetsProduction production = assetsProductionService.getOne(new LambdaQueryWrapper<AssetsProduction>()
+                        .select(AssetsProduction::getProductionNo, AssetsProduction::getProductionType).eq(BaseEntity::getId, declare.getProductionId())
+                        .eq(BaseEntity::getDeleted, Boolean.FALSE));
+                commissionDeclareDetailVO.setReportNo(production.getProductionNo());
+                commissionDeclareDetailVO.setProduction(production.getProductionType());
+            }
+            List<UserShareRate> rates = iBusinessPerformanceDistributionService.alloAssetsDistributionDeclareId(id);
+            commissionDeclareDetailVO.setUserShareRates(rates);
+        }
+
         return commissionDeclareDetailVO;
     }
 
@@ -181,7 +209,7 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     }
 
     /**
-     * 资产业务新增评估人员绩效分配申报
+     * 资产业务新增绩效分配申报
      * @param declareDTO dto
      * @return Long
      */
@@ -218,6 +246,18 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     }
 
     /**
+     * 获取资产评估人员提成申报列表
+     * @param page 分页参数
+     * @param commissionDeclare 查询参数
+     * @return Page<CommissionDeclareVO>
+     */
+    @Override
+    public Page<CommissionDeclareVO> assetsMarketDeclarePage(Page page, CommissionDeclareVO commissionDeclare) {
+        Long currentMarketUserId = LoginContext.getCurrentUserId();
+        return commissionDeclareMapper.assetsMarketDeclarePage(page, commissionDeclare, currentMarketUserId);
+    }
+
+    /**
      * 资产待办绩效申报列表
      * @param page 分页参数
      * @param checkVO 查询参数

+ 7 - 2
service/src/main/java/com/dayou/workflow/config/WorkNodeProcessable.java

@@ -40,8 +40,7 @@ import static com.dayou.common.Constants.MAJOR_HANDLER;
 import static com.dayou.common.Constants.PERSONAL_HANDLER;
 import static com.dayou.enums.FinanceInvoiceState.审核拒绝;
 import static com.dayou.enums.FinanceInvoiceState.审核通过;
-import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_EVALUATE_DEPARTMENT;
-import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_MARKET_DEPARTMENT;
+import static com.dayou.enums.GlobalConfigEnum.*;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
 import static com.dayou.enums.workflow.NodeStateEnum.*;
 
@@ -139,6 +138,8 @@ public class WorkNodeProcessable {
         switch (mainBusinessEnum){
             case COMMISSION_DECLARE_MAJOR_EVALUATE:
             case COMMISSION_DECLARE_MAJOR_MARKET:
+            case COMMISSION_DECLARE_ASSET_EVALUATE:
+            case COMMISSION_DECLARE_ASSET_MARKET:
                 commissionDeclareService.update(new LambdaUpdateWrapper<CommissionDeclare>().set(CommissionDeclare::getDeclareResult,审核通过.name())
                         .eq(BaseEntity::getId,currentInstanceNode.getBusinessId()));
                 break;
@@ -328,6 +329,10 @@ public class WorkNodeProcessable {
                 return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_MARKET_DEPARTMENT);
             case COMMISSION_DECLARE_MAJOR_EVALUATE:
                 return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_EVALUATE_DEPARTMENT);
+            case COMMISSION_DECLARE_ASSET_MARKET:
+                return findDepartmentLeader(ownDepIds,COMMISSION_ASSET_MARKET_DEPARTMENT);
+            case COMMISSION_DECLARE_ASSET_EVALUATE:
+                return findDepartmentLeader(ownDepIds,COMMISSION_ASSET_EVALUATE_DEPARTMENT);
         }
         return 0L;
     }