Forráskód Böngészése

优化实收款认领

wucl 1 éve
szülő
commit
0babb0edb9

+ 29 - 0
biz-base/src/main/java/com/dayou/controller/CommissionDeclareController.java

@@ -98,5 +98,34 @@ public class CommissionDeclareController extends BaseController {
         List<CommissionDeclareTodoCheckVO> ret = commissionDeclareService.todoCheckList();
         return RestResponse.data(ret);
     }
+
+    /**
+     * 资产业务评估人员提成申报列表
+     */
+    @GetMapping("/assets/evaluate")
+    public RestResponse<Page<CommissionDeclareVO>> assetsEvaluateDeclarePage(CommissionDeclareVO commissionDeclare, Page page){
+        Page<CommissionDeclareVO> pages=commissionDeclareService.assetsEvaluateDeclarePage(page,commissionDeclare);
+        return RestResponse.data(pages);
+    }
+
+    /**
+     * 资产业务新增评估人员绩效分配申报
+     * @param declareDTO dto
+     * @return RestResponse<Boolean>
+     */
+    @PostMapping("/assets")
+    public synchronized RestResponse<Boolean> assetsCommissionDeclare(@RequestBody CommissionDeclareDTO declareDTO) {
+        Long ret = commissionDeclareService.assetsCommissionDeclare(declareDTO);
+        return RestResponse.data(ret!=null);
+    }
+
+    /**
+     * 资产提成申报待审核列表
+     */
+    @GetMapping("/assets/check")
+    public RestResponse<Page<CommissionDeclareTodoCheckVO>> assetsTodoCheckPage(CommissionDeclareTodoCheckVO checkVO, Page page){
+        Page<CommissionDeclareTodoCheckVO> ret = commissionDeclareService.assetsTodoCheckPage(page,checkVO);
+        return RestResponse.data(ret);
+    }
 }
 

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

@@ -28,4 +28,21 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
     Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
 
     List<CommissionDeclareTodoCheckVO> todoCheckList(@Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
+
+    /**
+     * 获取资产评估人员提成申报列表
+     * @param page 分页参数
+     * @param commissionDeclare 查询参数
+     * @param currentEvaluateUserId 项目负责人id
+     * @return Page<CommissionDeclareVO>
+     */
+    Page<CommissionDeclareVO> assetsEvaluateDeclarePage(Page page, @Param("declare")CommissionDeclareVO commissionDeclare, @Param("evaluateUserId")Long currentEvaluateUserId);
+
+    /**
+     * 资产待办绩效申报列表
+     * @param page 分页参数
+     * @param checkVO 查询参数
+     * @return Page<CommissionDeclareTodoCheckVO>
+     */
+    Page<CommissionDeclareTodoCheckVO> assetsTodoCheckPage(Page page, @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
 }

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

@@ -281,4 +281,158 @@
         <include refid="majorDeclareTodoCheck"/>
         limit 8
     </select>
+
+    <!--获取资产评估人员提成申报列表-->
+    <select id="assetsEvaluateDeclarePage" 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 )) 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 )) 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 )) 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, create_production_date, created FROM assets_production WHERE deleted = 0 AND production_type != 'STATEMENT' ) 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 ap.create_production_date IS NOT NULL
+        AND assets.principal_id = #{evaluateUserId}) 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 = #{evaluateUserId}) 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
+            wfni.id,
+            wtr.id AS taskId,
+            wfni.id AS currentNodeId,
+            wfni.business_id,
+            wfni.business_type,
+            assetsInfo.orderName,
+            assetsInfo.assets_name,
+            assetsInfo.reportNo,
+            assetsInfo.order_id,
+            wfni.NAME AS nodeName,
+            wfni.CODE AS nodeCode,
+            u.NAME AS handler,
+            u1.name as declareUser,
+            dd.name as businessCate,
+            (case bcr.user_type when 'MARKETER' then '市场人员' when 'EVALUATOR' then '评估人员' else '--' end) as userType,
+            bcr.min_ratio as ratio,
+            cd.created,
+            assetsInfo.prodId
+        FROM
+            work_task_record wtr
+                INNER JOIN (
+                SELECT
+                    wn.NAME,
+                    wn.CODE,
+                    wfni.id,
+                    wfni.business_id,
+                    wfni.state,
+                    wfni.business_type
+                FROM
+                    work_flow_node_instance wfni
+                        LEFT JOIN work_node wn ON wn.id = wfni.node_id
+                WHERE
+                    wfni.business_type IN ( 'COMMISSION_DECLARE_ASSET_MARKET', 'COMMISSION_DECLARE_ASSET_EVALUATE' )
+                  AND wfni.state = 'PENDING'
+                  AND wfni.deleted = 0
+                  AND wn.deleted = 0
+            ) wfni ON wtr.instance_id = wfni.id
+                INNER JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id, declare_result, declare_user_id,created FROM commission_declare WHERE deleted = 0 ) cd ON cd.id = wfni.business_id
+                LEFT JOIN (
+                SELECT
+                    ifnull( ap.id, assets.id ) AS aId,
+                    assets.NAME AS orderName,
+                    assets.order_id,
+                    ap.assets_name,
+                    ap.production_no AS reportNo ,
+                    ap.id as prodId
+                FROM
+                    assets
+                        LEFT JOIN ( SELECT id, assets_name, business_id, production_no FROM assets_production WHERE deleted = 0 ) ap ON assets.id = ap.business_id
+            ) assetsInfo ON assetsInfo.aId = cd.xId
+                LEFT JOIN user u ON u.id = wtr.handler_id
+                left join business_commission_rate bcr on bcr.id = cd.commission_rate_id
+                left join dict_data dd on dd.id = bcr.business_cate_id
+                left join user u1 on u1.id = cd.declare_user_id
+        WHERE
+            wtr.handler_id = #{checkVO.handlerId}
+          AND u.deleted = 0
+          AND wtr.deleted = 0
+    </select>
 </mapper>

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

@@ -30,4 +30,9 @@ public class CommissionDeclareDTO {
 
     private List<UserShareRate> userShareRates;
 
+    /**
+     * 资产业务人员绩效分配信息
+     */
+    private AssetsPerformanceDistributionAddDTO distributionDto;
+
 }

+ 10 - 0
domain/src/main/java/com/dayou/entity/BusinessPerformanceDistribution.java

@@ -59,5 +59,15 @@ public class BusinessPerformanceDistribution extends BaseEntity implements Seria
      */
     private String memberType;
 
+    /**
+     * 提成申报id
+     */
+    private Long declareId;
+
+    /**
+     * 人员类型(市场人员/评估人员)
+     */
+    private String userType;
+
 
 }

+ 23 - 0
service/src/main/java/com/dayou/service/ICommissionDeclareService.java

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

+ 65 - 0
service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java

@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -67,6 +68,9 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     @Autowired
     private IMessageService messageService;
 
+    @Autowired
+    private IBusinessPerformanceDistributionService iBusinessPerformanceDistributionService;
+
 
 
     @Override
@@ -165,6 +169,67 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     }
 
     /**
+     * 获取资产评估人员提成申报列表
+     * @param page 分页参数
+     * @param commissionDeclare 查询参数
+     * @return Page<CommissionDeclareVO>
+     */
+    @Override
+    public Page<CommissionDeclareVO> assetsEvaluateDeclarePage(Page page, CommissionDeclareVO commissionDeclare) {
+        Long currentEvaluateUserId = LoginContext.getCurrentUserId();
+        return commissionDeclareMapper.assetsEvaluateDeclarePage(page, commissionDeclare, currentEvaluateUserId);
+    }
+
+    /**
+     * 资产业务新增评估人员绩效分配申报
+     * @param declareDTO dto
+     * @return Long
+     */
+    @Override
+    @Transactional
+    public Long assetsCommissionDeclare(CommissionDeclareDTO declareDTO) {
+        removeRejectDeclare(declareDTO);
+        //保存申报记录
+        CommissionDeclare commissionDeclare = BeanUtil.copyProperties(declareDTO, CommissionDeclare.class);
+        commissionDeclare.setDeclareResult(FinanceInvoiceState.审核中.name());
+        commissionDeclare.setDeclareUserId(LoginContext.getCurrentUserId());
+        this.save(commissionDeclare);
+
+        //设置提成比例
+        List<BusinessPerformanceDistribution> performanceDistributionList = new ArrayList<>();
+
+        // 将前端传递的数据进行处理,添加成单个的对象
+        for (BusinessPerformanceDistribution distribution : declareDTO.getDistributionDto().getDistributionList()){
+            BusinessPerformanceDistribution performanceDistribution = new BusinessPerformanceDistribution();
+            performanceDistribution.setBusinessId(declareDTO.getDistributionDto().getBusinessId());
+            performanceDistribution.setBusinessType(declareDTO.getDistributionDto().getBusinessType());
+            performanceDistribution.setReportNo(declareDTO.getDistributionDto().getReportNo());
+            performanceDistribution.setMemberId(distribution.getMemberId());
+            performanceDistribution.setPerformanceDistribution(distribution.getPerformanceDistribution());
+            performanceDistribution.setMemberType(distribution.getMemberType());
+            performanceDistribution.setDeclareId(commissionDeclare.getId());
+            performanceDistribution.setUserType(declareDTO.getDistributionDto().getUserType());
+            performanceDistributionList.add(performanceDistribution);
+        }
+        iBusinessPerformanceDistributionService.saveBatch(performanceDistributionList);
+        //提交审核流程
+        workFlowService.openingDeclare(MainBusinessEnum.valueOf(declareDTO.getBusinessType()), commissionDeclare.getId());
+        return commissionDeclare.getId();
+    }
+
+    /**
+     * 资产待办绩效申报列表
+     * @param page 分页参数
+     * @param checkVO 查询参数
+     * @return Page<CommissionDeclareTodoCheckVO>
+     */
+    @Override
+    public Page<CommissionDeclareTodoCheckVO> assetsTodoCheckPage(Page page, CommissionDeclareTodoCheckVO checkVO) {
+        checkVO.setHandlerId(LoginContext.getCurrentUserId());
+        return commissionDeclareMapper.assetsTodoCheckPage(page,checkVO);
+    }
+
+    /**
      * 删除之前被拒绝的申报
      * @param declareDTO
      */

+ 9 - 0
sql/update_sql.sql

@@ -451,3 +451,12 @@ DROP TABLE IF EXISTS `business_attachment`;
 alter table major_production add COLUMN standard_amount decimal(16,2) DEFAULT NULL comment '标准收费';
 alter table finance_claim add COLUMN production_fund_id bigint(20) DEFAULT NULL comment '产品收款id';
 ALTER TABLE finance_claim CHANGE COLUMN claim_id claim_user_id bigint(20) ;
+
+
+/**
+  日期:2024-05-22
+  修改人:苟耕铨
+ */
+ # 表business_performance_distribution新增字段
+ALTER TABLE business_performance_distribution ADD COLUMN declare_id BIGINT(20) NULL COMMENT '提成申报id';
+ALTER TABLE business_performance_distribution ADD COLUMN user_type VARCHAR(255) NULL COMMENT '人员类型(市场人员/评估人员)';