瀏覽代碼

提成优化部分

wucl 2 年之前
父節點
當前提交
b90a054667
共有 26 個文件被更改,包括 167 次插入68 次删除
  1. 2 2
      biz-base/src/main/java/com/dayou/controller/BrokerageBaseAmountController.java
  2. 0 1
      biz-base/src/main/java/com/dayou/controller/BrokerageMarketerRatioController.java
  3. 2 2
      biz-base/src/main/java/com/dayou/controller/BrokeragePostRatioController.java
  4. 54 5
      biz-base/src/test/java/BrokerageTest.java
  5. 1 1
      common/src/main/java/com/dayou/configuration/WebConfig.java
  6. 1 1
      common/src/main/java/com/dayou/exception/ErrorCode.java
  7. 0 1
      common/src/main/java/com/dayou/utils/JwtTokenUtil.java
  8. 2 1
      dao/src/main/java/com/dayou/mapper/BrokerageBaseAmountMapper.java
  9. 2 1
      dao/src/main/java/com/dayou/mapper/BrokerageMarketerRatioMapper.java
  10. 1 1
      dao/src/main/java/com/dayou/mapper/BrokeragePostRatioMapper.java
  11. 3 0
      dao/src/main/java/com/dayou/mapper/CustomerMapper.java
  12. 10 1
      dao/src/main/resources/mapper/BrokerageBaseAmountMapper.xml
  13. 11 2
      dao/src/main/resources/mapper/BrokerageMarketerRatioMapper.xml
  14. 3 0
      dao/src/main/resources/mapper/BrokeragePostRatioMapper.xml
  15. 4 0
      dao/src/main/resources/mapper/ItemMapper.xml
  16. 6 6
      dao/src/main/resources/mapper/MarketStatMapper.xml
  17. 5 0
      domain/src/main/java/com/dayou/dto/ItemDTO.java
  18. 2 0
      domain/src/main/java/com/dayou/vo/BaseAmountVO.java
  19. 2 0
      domain/src/main/java/com/dayou/vo/PostRatioVO.java
  20. 1 1
      service/src/main/java/com/dayou/service/IBrokerageBaseAmountService.java
  21. 1 1
      service/src/main/java/com/dayou/service/IBrokeragePostRatioService.java
  22. 4 0
      service/src/main/java/com/dayou/service/ICustomerService.java
  23. 2 2
      service/src/main/java/com/dayou/service/impl/BrokerageBaseAmountServiceImpl.java
  24. 2 2
      service/src/main/java/com/dayou/service/impl/BrokeragePostRatioServiceImpl.java
  25. 1 0
      service/src/main/java/com/dayou/service/impl/CustomerServiceImpl.java
  26. 45 37
      service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

+ 2 - 2
biz-base/src/main/java/com/dayou/controller/BrokerageBaseAmountController.java

@@ -28,8 +28,8 @@ public class BrokerageBaseAmountController extends BaseController {
     * 自定义提成基数列表
     */
     @GetMapping("")
-    public RestResponse<Page<BaseAmountVO>> page(BrokerageBaseAmount brokerageBaseAmount, Page page){
-        Page<BaseAmountVO> pages=brokerageBaseAmountService.selectPage(page,brokerageBaseAmount);
+    public RestResponse<Page<BaseAmountVO>> page(BaseAmountVO baseAmountVO, Page page){
+        Page<BaseAmountVO> pages=brokerageBaseAmountService.selectPage(page,baseAmountVO);
         return RestResponse.data(pages);
     }
 

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

@@ -28,7 +28,6 @@ public class BrokerageMarketerRatioController extends BaseController {
 
     /**
     * 项目提成比例(市场人员)列表
-     * //todo 需转换为vo对象
     */
     @GetMapping("")
     public RestResponse<Page<MarketerRatioVO>> page(BrokerageMarketerRatio brokerageMarketerRatio, Page page){

+ 2 - 2
biz-base/src/main/java/com/dayou/controller/BrokeragePostRatioController.java

@@ -41,8 +41,8 @@ public class BrokeragePostRatioController extends BaseController {
     * 领导岗位抽成率列表
     */
     @GetMapping("")
-    public RestResponse<Page<PostRatioVO>> page(BrokeragePostRatio brokeragePostRatio, Page page){
-        Page<PostRatioVO> pages=brokeragePostRatioService.selectPage(page,brokeragePostRatio);
+    public RestResponse<Page<PostRatioVO>> page(PostRatioVO postRatioVO, Page page){
+        Page<PostRatioVO> pages=brokeragePostRatioService.selectPage(page,postRatioVO);
         return RestResponse.data(pages);
     }
 

+ 54 - 5
biz-base/src/test/java/BrokerageTest.java

@@ -2,23 +2,29 @@ import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.BaseApplication;
 import com.dayou.bo.LeaderRatioBO;
+import com.dayou.configuration.AsyncManager;
 import com.dayou.dto.ItemDTO;
 import com.dayou.entity.BrokerageMarketerRatio;
+import com.dayou.entity.Customer;
 import com.dayou.entity.ItemBrokerageGeneral;
 import com.dayou.service.*;
 import com.dayou.service.impl.ItemBrokerageSequenceServiceImpl;
 import com.google.common.cache.Cache;
 import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Lists;
+import com.zaxxer.hikari.HikariDataSource;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import java.math.BigDecimal;
+import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
 
@@ -44,11 +50,13 @@ public class BrokerageTest {
     private LoadingCache<String,BigDecimal> globalConfigCache;
 
     @Autowired
-    private IBrokerageMarketerRatioService marketerRatioService;
+    private ICustomerService customerService;
 
     @Autowired
     private IItemBrokerageSequenceService itemBrokerageSequenceService;
 
+    private HikariDataSource hikariDataSource;
+
 
 
 
@@ -58,10 +66,51 @@ public class BrokerageTest {
         BigDecimal ifPresent = marketerRatioCache.get("2&3");
         System.out.println(marketerRatioCache.size());
     }
-    @Test
-    public void settle() {
-        itemBrokerageSequenceService.doNonMarketerAheadSettle();
-        itemBrokerageSequenceService.doAbleItemBrokerageSettle();
+
+    public static void main(String ages []) {
+//        itemBrokerageSequenceService.doNonMarketerAheadSettle();
+//        itemBrokerageSequenceService.doAbleItemBrokerageSettle();
+
+        HikariDataSource hikariDataSource = initDataSource();
+
+        for (int i =0 ;i<100000;i++){
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    StringBuffer sb = new StringBuffer("insert into customer (name) values");
+                    Thread threadName = Thread.currentThread();
+                    System.out.println(threadName +"线程开始执行...");
+                    long start = System.currentTimeMillis();
+                    for (int j =0;j<100;j++){
+                        if (j!=99){
+                            sb.append("('"+Thread.currentThread().getName()+"["+j+"]'),");
+                        }else {
+                            sb.append("('"+Thread.currentThread().getName()+"["+j+"]')");
+                        }
+
+                    }
+                    JdbcTemplate jdbcTemplate = new JdbcTemplate(hikariDataSource);
+                    jdbcTemplate.execute(sb.toString());
+                    long end = System.currentTimeMillis();
+                    System.out.println(threadName +"现成执行完毕,耗时:" + (end-start)+"毫秒");
+                }
+            }).start();
+        }
+        System.out.println("主线程退出...");
+    }
+
+    public static HikariDataSource initDataSource(){
+        HikariDataSource hikariDataSource = new HikariDataSource();
+        hikariDataSource.setConnectionTimeout(600000);
+        hikariDataSource.setMinimumIdle(100);
+        hikariDataSource.setMaximumPoolSize(100000);
+        hikariDataSource.setValidationTimeout(5000);
+        hikariDataSource.setIdleTimeout(300000);
+        hikariDataSource.setLeakDetectionThreshold(500000);
+        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/item-management?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true");
+        hikariDataSource.setUsername("root");
+        hikariDataSource.setPassword("914851221");
+        return hikariDataSource;
     }
 
 }

+ 1 - 1
common/src/main/java/com/dayou/configuration/WebConfig.java

@@ -69,7 +69,7 @@ public class WebConfig implements WebMvcConfigurer {
                 .excludePathPatterns("/*/dfs/**")
                 .excludePathPatterns("/dfs/**")
                 .excludePathPatterns("/user/login", "/oauth/login", "/unified-auth/login",
-                        "/doc/**", "/globalConfig/getSysCfg", "/sdk/**", "/error", "/profession/detail", "/YN/oauthLogin","/callback/**");
+                        "/doc/**", "/globalConfig/getSysCfg", "/sdk/**", "/error", "/profession/detail","/callback/**");
 
         registry.addInterceptor(permissionInterceptor)
                 .addPathPatterns("/**")

+ 1 - 1
common/src/main/java/com/dayou/exception/ErrorCode.java

@@ -43,7 +43,7 @@ public class ErrorCode {
 
     public static final ErrorCode BROKERAGE_ITEM_STATE_ERROR2 = ErrorCode("10019", "客户经理未达到回款目标,无法计算提成");
 
-    public static final ErrorCode BROKERAGE_SETTLE_FAILED = ErrorCode("10020", "项目结算失败,请检查项目排期或提成权重。");
+    public static final ErrorCode BROKERAGE_SETTLE_FAILED = ErrorCode("10020", "项目评价失败,请检查项目排期或提成权重。");
 
     public static final ErrorCode ITEM_EVALUATE_ERROR = ErrorCode("10021", "抱歉!当前项目还未完成,暂时无法评价。");
 

+ 0 - 1
common/src/main/java/com/dayou/utils/JwtTokenUtil.java

@@ -70,7 +70,6 @@ public class JwtTokenUtil {
      * 获取jwt的payload部分
      */
     public static Claims getClaimFromToken(String token, String signKey) {
-        //bug fixed 2020/09/03  过期token 抛出SignatureException 导致外部调用报错 开小差
         Claims claims = null;
         try {
             claims = Jwts.parser()

+ 2 - 1
dao/src/main/java/com/dayou/mapper/BrokerageBaseAmountMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.BrokerageBaseAmount;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.BaseAmountVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -15,5 +16,5 @@ import com.dayou.vo.BaseAmountVO;
  */
 public interface BrokerageBaseAmountMapper extends CustomBaseMapper<BrokerageBaseAmount> {
 
-    Page<BaseAmountVO> xPage(Page page, BrokerageBaseAmount brokerageBaseAmount);
+    Page<BaseAmountVO> xPage(Page page, @Param("base") BaseAmountVO base);
 }

+ 2 - 1
dao/src/main/java/com/dayou/mapper/BrokerageMarketerRatioMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.BrokerageMarketerRatio;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.MarketerRatioVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -15,5 +16,5 @@ import com.dayou.vo.MarketerRatioVO;
  */
 public interface BrokerageMarketerRatioMapper extends CustomBaseMapper<BrokerageMarketerRatio> {
 
-    Page<MarketerRatioVO> xPage(Page page, BrokerageMarketerRatio brokerageMarketerRatio);
+    Page<MarketerRatioVO> xPage(Page page, @Param("ratio") BrokerageMarketerRatio brokerageMarketerRatio);
 }

+ 1 - 1
dao/src/main/java/com/dayou/mapper/BrokeragePostRatioMapper.java

@@ -21,5 +21,5 @@ public interface BrokeragePostRatioMapper extends CustomBaseMapper<BrokeragePost
 
     Set<LeaderRatioBO> getLeadersRatio(@Param("parentPostIds") Set<Long> parentPostIds,@Param("userId") Long userId);
 
-    Page<PostRatioVO> page(Page page, BrokeragePostRatio brokeragePostRatio);
+    Page<PostRatioVO> page(Page page, @Param("ratio") PostRatioVO postRatioVO);
 }

+ 3 - 0
dao/src/main/java/com/dayou/mapper/CustomerMapper.java

@@ -6,6 +6,8 @@ import com.dayou.entity.Customer;
 import com.dayou.dao.CustomBaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 客户表 Mapper 接口
@@ -17,4 +19,5 @@ import org.apache.ibatis.annotations.Param;
 public interface CustomerMapper extends CustomBaseMapper<Customer> {
 
     Page<CustomerDTO> getPage(Page page, @Param("customer") CustomerDTO customer);
+
 }

+ 10 - 1
dao/src/main/resources/mapper/BrokerageBaseAmountMapper.xml

@@ -36,7 +36,7 @@
                 LEFT JOIN department d ON p.department_id = d.id
         where up.user_id = #{user_id} and up.deleted = 0 and d.deleted=0 and p.deleted=0
     </select>
-    <select id="xPage" resultMap="BaseResultMap">
+    <select id="xPage" resultMap="BaseResultMap" parameterType="com.dayou.vo.BaseAmountVO">
         SELECT
             ba.id,
             u.NAME,
@@ -48,6 +48,15 @@
                 LEFT JOIN brokerage_base_amount ba ON u.id = ba.user_id
         WHERE
             u.deleted = 0
+        <if test="base!=null and base.staffNo!=null and base.staffNo!='' ">
+            and u.staff_no like concat('%',#{base.staffNo},'%')
+        </if>
+        <if test="base!=null and base.name!=null and base.name!='' ">
+            and u.name like concat('%',#{base.name},'%')
+        </if>
+        <if test="base!=null and base.keyword!=null and base.keyword!='' ">
+            and u.name like concat('%',#{base.keyword},'%') or u.staff_no like concat('%',#{base.keyword},'%')
+        </if>
         ORDER BY
             ba.id DESC
     </select>

+ 11 - 2
dao/src/main/resources/mapper/BrokerageMarketerRatioMapper.xml

@@ -23,7 +23,7 @@
         item_cate, item_source, ratio, remark
     </sql>
 
-    <select id="xPage" resultType="com.dayou.vo.MarketerRatioVO">
+    <select id="xPage" resultType="com.dayou.vo.MarketerRatioVO" parameterType="com.dayou.entity.BrokerageMarketerRatio">
         SELECT
             *
         FROM
@@ -48,6 +48,15 @@
                   AND deleted = 0
             ) source
                 LEFT JOIN brokerage_marketer_ratio br ON br.item_cate = itemCate
-                AND br.item_source = itemSource order by br.id desc
+                AND br.item_source = itemSource
+            <where>
+                <if test="ratio!=null and ratio.itemCate!=null">
+                    and itemCate = #{ratio.itemCate}
+                </if>
+                <if test="ratio!=null and ratio.itemSource!=null">
+                    and itemSource = #{ratio.itemSource}
+                </if>
+            </where>
+        order by br.id desc
     </select>
 </mapper>

+ 3 - 0
dao/src/main/resources/mapper/BrokeragePostRatioMapper.xml

@@ -56,6 +56,9 @@
         WHERE
             p.deleted = 0
           AND d.deleted = 0
+        <if test="ratio!=null and ratio.departmentId!=null">
+            and d.id = #{ratio.departmentId}
+        </if>
         ORDER BY
             r.id DESC;
     </select>

+ 4 - 0
dao/src/main/resources/mapper/ItemMapper.xml

@@ -129,6 +129,10 @@
         <if test="item!=null and item.businessNo!=null and item.businessNo!='' ">
             and i.business_no like concat (#{item.businessNo},'%')
         </if>
+        <if test="item!=null and item.isCurYear!=null ">
+            AND i.sign_date &gt;= concat( YEAR ( now())- 1, '-12-23' )
+            AND i.sign_date &lt;= concat( YEAR ( now()), '-12-22' )
+        </if>
         <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
             and i.client_manager like concat ('%',#{item.clientManager},'%')
         </if>

+ 6 - 6
dao/src/main/resources/mapper/MarketStatMapper.xml

@@ -34,8 +34,8 @@
       item
       WHERE
       deleted = 0
-      AND sign_date &gt;= DATE_SUB( CURDATE(), INTERVAL dayofyear( now())- 1 DAY )
-      AND sign_date &lt;= concat( YEAR ( now()), '-12-31' )
+      AND sign_date &gt;= concat( YEAR ( now())- 1, '-12-23' )
+      AND sign_date &lt;= concat( YEAR ( now()), '-12-22' )
       <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
          and user_id in
          <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
@@ -53,12 +53,12 @@
        AND pc.payment_date &gt;= concat(
        YEAR (
        now())-1,
-       '-12-22'
+       '-12-23'
        )
        AND pc.payment_date &lt;=  concat(
        YEAR (
        now()),
-       '-12-23'
+       '-12-22'
        )
       <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
          and i.user_id in
@@ -94,12 +94,12 @@
           AND pc.payment_date &gt;= concat(
             YEAR (
        now())-1,
-                '-12-22'
+                '-12-23'
             )
           AND pc.payment_date &lt;=  concat(
             YEAR (
        now()),
-                '-12-23'
+                '-12-22'
             )
           and i.user_id = #{userId}
     </select>

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

@@ -29,6 +29,11 @@ public class ItemDTO extends Item implements MergeKeyInterface {
      */
     private List<Long> departmentIds;
 
+    /**
+     * 本年项目查询标识符
+     */
+    private Boolean isCurYear;
+
     @Override
     public String mergeKey() {
         return super.getCate() +MERGE_SYMBOL+ super.getBusinessSource();

+ 2 - 0
domain/src/main/java/com/dayou/vo/BaseAmountVO.java

@@ -20,4 +20,6 @@ public class BaseAmountVO extends BrokerageBaseAmount {
     private String name;
 
     private List<DepartmentPostVO> departmentPostVOList;
+
+    private String keyword;
 }

+ 2 - 0
domain/src/main/java/com/dayou/vo/PostRatioVO.java

@@ -17,4 +17,6 @@ public class PostRatioVO extends BrokeragePostRatio {
 
     private String postName;
 
+    private Long departmentId;
+
 }

+ 1 - 1
service/src/main/java/com/dayou/service/IBrokerageBaseAmountService.java

@@ -16,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface IBrokerageBaseAmountService extends IService<BrokerageBaseAmount> {
 
-        Page<BaseAmountVO> selectPage(Page page, BrokerageBaseAmount brokerageBaseAmount);
+        Page<BaseAmountVO> selectPage(Page page, BaseAmountVO baseAmountVO);
 
         BrokerageBaseAmount detail(Long id);
 

+ 1 - 1
service/src/main/java/com/dayou/service/IBrokeragePostRatioService.java

@@ -16,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface IBrokeragePostRatioService extends IService<BrokeragePostRatio> {
 
-        Page<PostRatioVO> selectPage(Page page, BrokeragePostRatio brokeragePostRatio);
+        Page<PostRatioVO> selectPage(Page page, PostRatioVO postRatioVO);
 
         BrokeragePostRatio detail(Long id);
 

+ 4 - 0
service/src/main/java/com/dayou/service/ICustomerService.java

@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
 /**
  * <p>
  * 客户表 服务类
@@ -29,4 +32,5 @@ public interface ICustomerService extends IService<Customer> {
         XSSFWorkbook generateImportTemplate();
 
         void importExcel(MultipartFile file);
+
 }

+ 2 - 2
service/src/main/java/com/dayou/service/impl/BrokerageBaseAmountServiceImpl.java

@@ -38,8 +38,8 @@ public class BrokerageBaseAmountServiceImpl extends ServiceImpl<BrokerageBaseAmo
     private BrokerageBaseAmountMapper brokerageBaseAmountMapper;
     @Override
     @SuppressWarnings("unchecked")
-    public Page<BaseAmountVO> selectPage(Page page, BrokerageBaseAmount brokerageBaseAmount){
-        Page<BaseAmountVO> xPage = brokerageBaseAmountMapper.xPage(page,brokerageBaseAmount);
+    public Page<BaseAmountVO> selectPage(Page page, BaseAmountVO baseAmountVO){
+        Page<BaseAmountVO> xPage = brokerageBaseAmountMapper.xPage(page,baseAmountVO);
         return xPage;
     }
 

+ 2 - 2
service/src/main/java/com/dayou/service/impl/BrokeragePostRatioServiceImpl.java

@@ -50,8 +50,8 @@ public class BrokeragePostRatioServiceImpl extends ServiceImpl<BrokeragePostRati
 
     @Override
     @SuppressWarnings("unchecked")
-    public Page<PostRatioVO> selectPage(Page page, BrokeragePostRatio brokeragePostRatio){
-        Page<PostRatioVO> xPage = postRatioMapper.page(page,brokeragePostRatio);
+    public Page<PostRatioVO> selectPage(Page page, PostRatioVO postRatioVO){
+        Page<PostRatioVO> xPage = postRatioMapper.page(page,postRatioVO);
         return xPage;
     }
 

+ 1 - 0
service/src/main/java/com/dayou/service/impl/CustomerServiceImpl.java

@@ -151,6 +151,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         }, file, BatchTaskTypeEnum.DEFAULT, ExcelUtil.BatchImportStrategy.ROLL_BACK);
     }
 
+
     private void createExcelTitle(XSSFWorkbook wb) {
         Sheet sheet = wb.createSheet("客户信息导入模板");
         Row row = sheet.createRow(0);

+ 45 - 37
service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

@@ -171,11 +171,9 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         ItemBrokerageDetail marketerDetail = iItemBrokerageDetailService.getOne(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getGeneralId, general.getId())
                 .eq(BaseEntity::getDeleted, Boolean.FALSE).eq(ItemBrokerageDetail::getBrokerageMode,BrokerageMode.PERSONAL.getCode()).eq(ItemBrokerageDetail::getBrokerageRule,BrokerageRule.LAND_MARKETER_RULE.getCode()));
         if (general == null || marketerDetail == null){
-            addMarketerBrokerage(itemDTO.getId());
-            log.info("更新项目信息时创建了相关的提成记录");
+            log.info("更新项目信息时发现未创建提成总表和明细表记录,更新提成信息逻辑终止。");
             return;
         }
-
         MarketerBrokerageCalculator calculator = (MarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_MARKETER_RULE);
         //更新客户经理的提成记录
         UserTarget userTarget = getUserTarget(marketerDetail.getUserId());
@@ -220,12 +218,6 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         if (item.getAmount()!=null){
             NonMarketerMarketerBrokerageCalculator calculator = (NonMarketerMarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_OTHER_RULE);
             ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()));
-            if (general == null){
-                addMarketerBrokerage(itemStageVO.getItemId());
-                addParticipatorBrokerage(itemStageVO,brokerageStageId);
-                log.info("更新项目信息时创建了相关的提成记录");
-                return;
-            }
             Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
             Set<ItemBrokerageDetail> participatorBrokerageDetails = participators.stream().filter(s->s.getWeight()!=null).map(x -> {
                 BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
@@ -333,34 +325,39 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     @Override
     public void toSettleMarketerBrokerage(PaymentCollection payment) {
         ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
-        Item item = itemMapper.selectById(payment.getItemId());
-        List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
-                .eq(PaymentCollection::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
-        BigDecimal payDone = BigDecimal.valueOf(paymentList.stream().mapToDouble(PaymentCollection::getAmount).sum());
-        brokerageCalculateSupport.checkItemBrokerageStatusOnMarketerPredict(general.getMarketerStatus());
-
-        //如果此笔回款满足当月回款目标,则需要将上月签订的合同的预提状态改为 可预提
-        //获取此笔回款项目的客户经理本年回款总额
-        Long userId = itemMapper.selectById(payment.getItemId()).getUserId();
-        BigDecimal currentYearPaymentAmount = marketStatService.currentYearPayment(userId);
-        BigDecimal userTarget = new BigDecimal(getUserTarget(userId).getPaymentTarget());
-        if (brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget)){
-            //则需要将上月签订的合同的预提状态改为 可预提
-            List<ItemBrokerageGeneral> lastMonthItemsBrokerages = itemMapper.getLastMonthItems(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1),userId,BrokerageState.NOT_PAYMENT.getCode());
-            if (CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
-                lastMonthItemsBrokerages.stream().forEach(
-                        i->{i.setMarketerAdvanceBrokerageAble(Boolean.TRUE);
-                            i.setMarketerStatus(BrokerageState.TO_PREDICTING.getCode());
-                        });
-                this.updateBatchById(lastMonthItemsBrokerages);
-                log.info("更新了客户经理预提状态待预提");
+        if (general!=null){
+            Item item = itemMapper.selectById(payment.getItemId());
+            List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
+                    .eq(PaymentCollection::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+            BigDecimal payDone = BigDecimal.valueOf(paymentList.stream().mapToDouble(PaymentCollection::getAmount).sum());
+            brokerageCalculateSupport.checkItemBrokerageStatusOnMarketerPredict(general.getMarketerStatus());
+
+            //如果此笔回款满足当月回款目标,则需要将上月签订的合同的预提状态改为 可预提
+            //获取此笔回款项目的客户经理本年回款总额
+            Long userId = itemMapper.selectById(payment.getItemId()).getUserId();
+            BigDecimal currentYearPaymentAmount = marketStatService.currentYearPayment(userId);
+            BigDecimal userTarget = new BigDecimal(getUserTarget(userId).getPaymentTarget());
+            if (brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget)){
+                //则需要将上月签订的合同的预提状态改为 可预提
+                List<ItemBrokerageGeneral> lastMonthItemsBrokerages = itemMapper.getLastMonthItems(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1),userId,BrokerageState.NOT_PAYMENT.getCode());
+                if (CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
+                    lastMonthItemsBrokerages.stream().forEach(
+                            i->{i.setMarketerAdvanceBrokerageAble(Boolean.TRUE);
+                                i.setMarketerStatus(BrokerageState.TO_PREDICTING.getCode());
+                            });
+                    this.updateBatchById(lastMonthItemsBrokerages);
+                    log.info("更新了客户经理预提状态待预提");
+                }
+            }
+            if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
+                general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
+                this.updateById(general);
+            }else {
+                log.info("还有未回款项,暂不执行客户经理提成结算。");
             }
         }
-        if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
-            general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
-            this.updateById(general);
-        }else {
-            log.info("还有未回款项,暂不执行客户经理提成结算。");
+        else {
+            log.info("项目提成总表为创建,终止此流程。itemId[{}]",payment.getItemId());
         }
     }
 
@@ -395,7 +392,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     @Override
     public void beforeToSettleMarketerBrokerage(PaymentCollection payment) {
         ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
-        if (general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
+        if (general!=null && general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
             ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
         }
     }
@@ -403,6 +400,11 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     @Override
     public void beforeEditMarketerBrokerage(ItemDTO itemDTO) {
         ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemDTO.getId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        if (general == null){
+            addMarketerBrokerage(itemDTO.getId());
+            log.info("更新项目信息时创建了相关的提成记录");
+            return;
+        }
         if (general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
             ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
         }
@@ -411,6 +413,12 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     @Override
     public void beforeAddParticipatorBrokerage(ItemStageVO itemStageVO) {
         ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        if (general == null){
+            addMarketerBrokerage(itemStageVO.getItemId());
+            addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
+            log.info("更新项目信息时创建了相关的提成记录");
+            return;
+        }
         if (general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
             ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
         }
@@ -420,7 +428,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     public void beforeRemoveParticipatorBrokerage(Long itemStageId) {
         ItemStage itemStage = itemStageMapper.selectById(itemStageId);
         ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStage.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
-        if (general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
+        if (general!=null && general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
             ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
         }
     }