Bläddra i källkod

1.修复资产认领了实收款出库仍旧提示需要审批的问题
2.修改了资产业务我的提成myAssetsIncome SQL的提成计算规则
3.修复资产待办已归档流程还会查询出来
4.表修改
5.新增接口updateAssetsCommissionDeclare更新资产绩效申报提成比列与下限信息
6.修改查询审批详情的返回VO

GouGengquan 1 år sedan
förälder
incheckning
6affd6bfa6

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

@@ -54,7 +54,7 @@ public class AssetsController extends BaseController {
     }
 
     /**
-     * 条件查询我的资产任务订单列表
+     * 条件查询我的资产订单列表
      * @param page 分页条件
      * @param assetsSelectDTO 查询条件
      * @return Page<AssetsVO>

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

@@ -144,5 +144,15 @@ public class CommissionDeclareController extends BaseController {
     public RestResponse<List<CommissionDeclareTodoCheckVO>> assetsTodoCheckList() {
         return RestResponse.data(commissionDeclareService.assetsTodoCheckList());
     }
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return RestResponse<Boolean>
+     */
+    @PutMapping("/assets/check/update")
+    public RestResponse<Boolean> updateAssetsCommissionDeclare(@RequestBody CommissionDeclareDTO declareDTO) {
+        return RestResponse.data(commissionDeclareService.updateAssetsCommissionDeclare(declareDTO));
+    }
 }
 

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

@@ -1,6 +1,7 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.CommissionDeclareDTO;
 import com.dayou.entity.CommissionDeclare;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.CommissionDeclareTodoCheckVO;
@@ -61,4 +62,11 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
      * @return List<CommissionDeclareTodoCheckVO>
      */
     List<CommissionDeclareTodoCheckVO> assetsTodoCheckList( @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    Boolean updateAssetsCommissionDeclare(@Param("declareDTO") CommissionDeclareDTO declareDTO);
 }

+ 4 - 1
dao/src/main/resources/mapper/AssetsMapper.xml

@@ -86,13 +86,15 @@
         nodeInstance.business_id AS businessId,
         nodeInstance.business_sub_id,
         nodeInstance.business_min_id,
+        nodeInstance.state,
         record.id AS recordId,
         record.handler_id AS handlerId
         FROM work_flow_node_instance AS nodeInstance,
         work_task_record AS record,
         user,
         work_node AS node
-        WHERE (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
+        WHERE state = 'PENDING'
+#             (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
         AND nodeInstance.node_id = node.id
         AND record.handler_id = user.id
         AND nodeInstance.deleted = 0
@@ -100,6 +102,7 @@
         AND nodeInstance.business_type = 'ASSET_BUSINESS'
         ) AS nodeInfo ON nodeInfo.businessId = assets.id
         WHERE assets.deleted = 0
+        AND nodeInfo.state = 'PENDING'
         #评估业务类别(业务类型)查询
         <if test="assetsSelectDTO != null and assetsSelectDTO.assetsBusinessGener != null and assetsSelectDTO.assetsBusinessGener != '' ">
             AND assets.assets_business_gener = #{assetsSelectDTO.assetsBusinessGener}

+ 80 - 59
dao/src/main/resources/mapper/BusinessIncomeMapper.xml

@@ -68,65 +68,86 @@
 
     <!--资产业务我的提成-->
     <select id="myAssetsIncome" resultType="com.dayou.vo.UserCommissionProdVO">
-        SELECT
-            bpd.id,
-            fc.claim_amount as realAmount,
-            ap.production_no,
-            IF ( fc.claim_datetime > ap.save_file_date, fc.claim_datetime, ap.save_file_date ) AS settleDate,
-            ap.created,
-            dd.NAME AS businessCate,
-            cd.ratio AS ratio,
-            bpd.member_id,
-            bpd.performance_distribution AS allotRatio,
-            IF ( bcr.low_limit_amount > fc.claim_amount, fc.claim_amount * ( cd.ratio / 100 ) * bpd.performance_distribution, bcr.low_limit_amount * ( cd.ratio / 100 ) * bpd.performance_distribution) AS commissionAmount,
-            IF ( bcr.low_limit_amount > fc.claim_amount, fc.claim_amount * ( cd.ratio / 100 ), bcr.low_limit_amount * ( cd.ratio / 100 )) AS commissionAmount,
-            u.name as userName,
-            (case bpd.user_type when 'EVALUATE' then '评估人员' else '市场人员' end) as  userType
-        FROM
-            (
-                SELECT
-                    claim_amount,
-                    order_fund_id,
-                    production_fund_id,
-                    claim_datetime
-                FROM
-                    finance_claim
-                WHERE
-                    deleted = 0
-                  AND production_fund_id IS NOT NULL
-                  AND claim_datetime &gt;= #{vo.startDate}
-                  AND claim_datetime  &lt;= #{vo.endDate}
-                UNION ALL
-                SELECT
-                    allot_amount AS claim_amount,
-                    order_fund_id,
-                    production_fund_id,
-                    created AS claim_datetime
-                FROM
-                    order_fund_allot
-                WHERE
-                    deleted = 0
-                  AND created  &gt;= #{vo.startDate}
-                  AND created &lt;= #{vo.endDate}
-            ) fc
-                INNER JOIN ( SELECT id,order_fund_id, business_id, production_no FROM production_fund WHERE business_type = 'ASSET_BUSINESS' AND deleted = 0 ) pf ON ( pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id )
-                INNER JOIN ( SELECT id, business_id, production_no, production_type, save_file_date, delivery,created FROM assets_production WHERE deleted = 0 ) ap ON ap.production_no = pf.production_no
-                LEFT JOIN assets a ON a.id = ap.business_id
-                INNER JOIN ( SELECT id,business_id, production_id, business_type ,commission_rate_id, ratio FROM commission_declare WHERE  deleted = 0 AND declare_result = '审核通过' ) cd ON (
-                cd.business_id = a.id
-                    AND ( cd.production_id IS NULL OR cd.production_id = ap.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 ( SELECT id,business_id,user_type, report_no, member_id, performance_distribution ,declare_id FROM business_performance_distribution WHERE deleted = 0 ) bpd
-                          ON ( bpd.business_id = a.id and (bpd.report_no is null or bpd.report_no = ap.id )
-                              and  if(bpd.user_type='MARKET','COMMISSION_DECLARE_ASSET_MARKET','COMMISSION_DECLARE_ASSET_EVALUATE') = cd.business_type
-                                 )
-                              and if(bpd.user_type='MARKET',ap.delivery = true, ap.save_file_date is not null)
-                left join user u on u.id = bpd.member_id
-
-        WHERE
-            u.id= #{vo.userId}
-        order by settleDate DESC
+        SELECT bpd.id,
+               a.name                                                                           AS name,
+               fc.claim_amount                                                                  AS realAmount,
+               ap.production_no                                                                 AS reportNo,
+               IF(fc.claim_datetime > ap.save_file_date, fc.claim_datetime, ap.save_file_date)  AS settleDate,
+               ap.created,
+               dd.name                                                                          AS businessCate,
+               IF(cd.ratio IS NULL, bcr.min_ratio, cd.ratio)                                    AS ratio,
+               bpd.member_id,
+               bpd.performance_distribution                                                     AS allotRatio,
+               IF(bpd.user_type = '评估人员',
+                  IF(cd.defined_low_limit_amount &lt; fc.claim_amount,
+                     fc.claim_amount *  (cd.ratio / 100) * (bpd.performance_distribution / 100),
+                     cd.defined_low_limit_amount * (cd.ratio / 100) * (bpd.performance_distribution / 100)
+                  )
+                  ,fc.claim_amount *  (bcr.min_ratio / 100) * (bpd.performance_distribution / 100)
+               ) AS commissionAmount,
+               IF(bpd.user_type = '评估人员',
+                  IF(cd.defined_low_limit_amount &lt; fc.claim_amount,
+                     fc.claim_amount *  (cd.ratio / 100),
+                     cd.defined_low_limit_amount * (cd.ratio / 100)
+                  )
+                   ,fc.claim_amount *  (bcr.min_ratio / 100)
+               ) AS totalAmount,
+               u.name                                                                           AS userName,
+               bpd.user_type                                                                    AS userType
+        FROM (SELECT claim_amount,
+                     order_fund_id,
+                     production_fund_id,
+                     claim_datetime
+              FROM finance_claim
+              WHERE deleted = 0
+                AND production_fund_id IS NOT NULL
+                AND claim_datetime &gt;= #{vo.startDate}
+                AND claim_datetime &lt;= #{vo.endDate}
+              UNION ALL
+              SELECT allot_amount AS claim_amount,
+                     order_fund_id,
+                     production_fund_id,
+                     created      AS claim_datetime
+              FROM order_fund_allot
+              WHERE deleted = 0
+                AND created &gt;= #{vo.startDate}
+                AND created &lt;= #{vo.endDate}) fc
+                 INNER JOIN (SELECT id, order_fund_id, business_id, production_no
+                             FROM production_fund
+                             WHERE business_type = 'ASSET_BUSINESS'
+                               AND deleted = 0) pf
+                            ON (pf.id = fc.production_fund_id AND pf.order_fund_id = fc.order_fund_id)
+                 INNER JOIN (SELECT id, business_id, production_no, production_type, save_file_date, delivery, created
+                             FROM assets_production
+                             WHERE deleted = 0) ap ON ap.production_no = pf.production_no
+                 LEFT JOIN assets a ON a.id = ap.business_id
+                 INNER JOIN (SELECT id, business_id, production_id, business_type, commission_rate_id, ratio, defined_low_limit_amount
+                             FROM commission_declare
+                             WHERE deleted = 0
+                               AND declare_result = '审核通过') cd ON (
+            cd.business_id = a.id
+                AND (cd.production_id IS NULL OR cd.production_id = ap.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 (SELECT id,
+                                   business_id,
+                                   user_type,
+                                   report_no,
+                                   member_id,
+                                   performance_distribution,
+                                   declare_id
+                            FROM business_performance_distribution
+                            WHERE deleted = 0) bpd
+                           ON (bpd.business_id = a.id AND (bpd.report_no IS NULL OR bpd.report_no = ap.production_no)
+                               AND IF(bpd.user_type = '市场人员',
+                                      'COMMISSION_DECLARE_ASSET_MARKET',
+                                      'COMMISSION_DECLARE_ASSET_EVALUATE'
+                                   ) = cd.business_type
+                                  )
+                               AND IF(bpd.user_type = '市场人员', ap.delivery = TRUE, ap.save_file_date IS NOT NULL)
+                 LEFT JOIN user u ON u.id = bpd.member_id
+        WHERE u.id = #{vo.userId}
+        ORDER BY settleDate DESC
     </select>
 
 </mapper>

+ 13 - 1
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -207,7 +207,10 @@
             u.NAME AS declareUser,
             bcr.business_cate_id,
             bcr.business_type,
-            cd.created
+            cd.created,
+            cd.ratio,
+            cd.defined_low_limit_amount,
+            cd.business_type AS declareBusinessType
         FROM
             commission_declare cd
                 LEFT JOIN business_commission_rate bcr ON bcr.id = cd.commission_rate_id
@@ -627,4 +630,13 @@
         <include refid="getAssetsTodoCheck" />
         LIMIT 8
     </select>
+
+    <!--更新资产绩效申报提成比列与下限信息-->
+    <update id="updateAssetsCommissionDeclare">
+        UPDATE commission_declare
+        SET ratio = #{declareDTO.ratio},
+            defined_low_limit_amount = #{declareDTO.definedLowLimitAmount}
+        WHERE id = #{declareDTO.id}
+    </update>
+
 </mapper>

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

@@ -16,6 +16,7 @@ import java.util.List;
 @Data
 public class CommissionDeclareDTO {
 
+    private Long id;
 
     @AbcValidate(required = true,message = "主业务id不能为空",fun = Check.NotNull)
     private Long businessId;
@@ -36,6 +37,11 @@ public class CommissionDeclareDTO {
     private Double ratio;
 
     /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
+    /**
      * 资产业务人员绩效分配信息
      */
     private AssetsPerformanceDistributionAddDTO distributionDto;

+ 2 - 0
domain/src/main/java/com/dayou/entity/BusinessCommissionRate.java

@@ -1,6 +1,7 @@
 package com.dayou.entity;
 import java.math.BigDecimal;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayou.common.BaseEntity;
 import lombok.Data;
@@ -50,6 +51,7 @@ public class BusinessCommissionRate extends BaseEntity {
      */
     @ImportCell
     @ExportCell(columnName = "最大提成比例")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private BigDecimal maxRatio;
 
     /**

+ 5 - 0
domain/src/main/java/com/dayou/entity/CommissionDeclare.java

@@ -57,4 +57,9 @@ public class CommissionDeclare extends BaseEntity {
      */
     private Double ratio;
 
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
 }

+ 11 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java

@@ -34,6 +34,17 @@ public class CommissionDeclareDetailVO {
 
     private String declareResult;
 
+    private String declareBusinessType;
+    /**
+     * 提成比例
+     */
+    private Double ratio;
+
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
     private List<String> remarks;
 
     private List<UserShareRate> userShareRates;

+ 12 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareVO.java

@@ -105,4 +105,16 @@ public class CommissionDeclareVO {
 
     private Date created;
 
+    private String declareBusinessType;
+
+    /**
+     * 提成比例
+     */
+    private Double ratio;
+
+    /**
+     * 提成申报自定义提成下限
+     */
+    private Double definedLowLimitAmount;
+
 }

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

@@ -54,7 +54,7 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
     Long assetsCommissionDeclare(CommissionDeclareDTO declareDTO);
 
     /**
-     * 获取资产评估人员提成申报列表
+     * 获取资产市场人员提成申报列表
      * @param page 分页参数
      * @param commissionDeclare 查询参数
      * @return Page<CommissionDeclareVO>
@@ -74,4 +74,11 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
      * @return List<CommissionDeclareTodoCheckVO>
      */
     List<CommissionDeclareTodoCheckVO> assetsTodoCheckList();
+
+    /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    Boolean updateAssetsCommissionDeclare(CommissionDeclareDTO declareDTO);
 }

+ 10 - 6
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -268,12 +268,16 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
                 } else if (assetsProduction.getRepertoryState()) {
                     ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还已出库,无需出库。");
                 }
-                OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
-                        .select(BaseEntity::getId, OrderFund::getRealAmount)
-                        .eq(OrderFund::getBusinessId, wareHouseDTO.getBusinessId())
-                        .eq(OrderFund::getBusinessType, ASSET_BUSINESS.getCode()));
-                // 非意见书,且实收款未认领(订单实收款为NULL)
-                if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(orderFund)) {
+//                OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
+//                        .select(BaseEntity::getId, OrderFund::getRealAmount)
+//                        .eq(OrderFund::getBusinessId, wareHouseDTO.getBusinessId())
+//                        .eq(OrderFund::getBusinessType, ASSET_BUSINESS.getCode()));
+                ProductionFund productionFund = productionFundService.getOne(new LambdaQueryWrapper<ProductionFund>()
+                        .select(BaseEntity::getId, ProductionFund::getRealAmount)
+                        .eq(ProductionFund::getProductionNo, wareHouseDTO.getProductionNo())
+                        .eq(ProductionFund::getBusinessType, ASSET_BUSINESS.getCode()));
+                // 非意见书,且实收款未认领(产品实收款为NULL)
+                if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(productionFund.getRealAmount())) {
                     int passCount = productionOutWarehouseService.count(new LambdaQueryWrapper<ProductionOutWarehouse>()
                             .select(ProductionOutWarehouse::getDepartmentCheckState)
                             .eq(ProductionOutWarehouse::getReportNo, wareHouseDTO.getProductionNo())

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

@@ -282,6 +282,16 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     }
 
     /**
+     * 更新资产绩效申报提成比列与下限信息
+     * @param declareDTO dto
+     * @return Boolean
+     */
+    @Override
+    public Boolean updateAssetsCommissionDeclare(CommissionDeclareDTO declareDTO) {
+        return commissionDeclareMapper.updateAssetsCommissionDeclare(declareDTO);
+    }
+
+    /**
      * 删除之前被拒绝的申报
      * @param declareDTO
      */

+ 8 - 1
sql/update_sql.sql

@@ -506,4 +506,11 @@ ALTER TABLE business_performance_distribution ADD COLUMN participation_duration
 # 表assets_production新增字段if_save_file
 ALTER TABLE assets_production ADD COLUMN if_save_file bit(1) NOT NULL DEFAULT 0 comment '是否归档';
 # 表commission_declare新增字段ratio
-ALTER TABLE commission_declare ADD COLUMN ratio DECIMAL(16,2) NULL comment '提成比例';
+ALTER TABLE commission_declare ADD COLUMN ratio DECIMAL(16,2) NULL comment '提成比例';
+
+/**
+  日期:2024-06-13
+  修改人:苟耕铨
+ */
+# 表commission_declare新增字段defined_low_limit_amount
+ALTER TABLE commission_declare ADD COLUMN defined_low_limit_amount DECIMAL(16,2) NULL comment '提成申报自定义提成下限';