Procházet zdrojové kódy

账户余额 账户提现

Qchen před 2 roky
rodič
revize
4c8d51c881
19 změnil soubory, kde provedl 448 přidání a 300 odebrání
  1. 18 12
      src/main/java/com/ydtech/modules/admin/controller/SysDeptAccountController.java
  2. 1 4
      src/main/java/com/ydtech/modules/admin/controller/SysDeptAccountHistoryController.java
  3. 3 0
      src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java
  4. 5 0
      src/main/java/com/ydtech/modules/admin/dao/SysDeptAccountHistoryMapper.java
  5. 7 5
      src/main/java/com/ydtech/modules/admin/dao/SysDeptAccountMapper.java
  6. 4 0
      src/main/java/com/ydtech/modules/admin/model/SysDept.java
  7. 1 5
      src/main/java/com/ydtech/modules/admin/model/SysDeptAccount.java
  8. 0 8
      src/main/java/com/ydtech/modules/admin/model/dto/SysDeptAccountDto.java
  9. 7 1
      src/main/java/com/ydtech/modules/admin/model/dto/SysDeptAccountHistoryDto.java
  10. 30 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysDeptAccountByUserVo.java
  11. 1 1
      src/main/java/com/ydtech/modules/admin/service/SysDeptAccountHistoryService.java
  12. 9 8
      src/main/java/com/ydtech/modules/admin/service/SysDeptAccountService.java
  13. 8 24
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountHistoryServiceImpl.java
  14. 41 15
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountServiceImpl.java
  15. 1 1
      src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java
  16. 210 210
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  17. 4 6
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  18. 46 0
      src/main/resources/mapper/modules/admin/SysDeptAccountHistoryMapper.xml
  19. 52 0
      src/main/resources/mapper/modules/admin/SysDeptAccountMapper.xml

+ 18 - 12
src/main/java/com/ydtech/modules/admin/controller/SysDeptAccountController.java

@@ -1,29 +1,21 @@
 package com.ydtech.modules.admin.controller;
 
 
-import com.github.pagehelper.IPage;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.dao.SysDeptAccountMapper;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysDeptAccountEntity;
+import com.ydtech.modules.admin.model.SysDeptAccount;
 import com.ydtech.modules.admin.model.dto.SysDeptAccountDto;
-import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysDeptAccountVO;
-import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
 import com.ydtech.modules.admin.service.SysDeptAccountService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
-import com.ydtech.modules.ser.model.SerAnnualAuditOrder;
-import com.ydtech.modules.ser.model.vo.SerAnnualAuditOrderQueryVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.List;
 
 @Api(tags = "机构账户表")
 @RequestMapping("/sysDeptAccount")
@@ -38,17 +30,31 @@ public class SysDeptAccountController extends BaseController {
 
     @PostMapping("/queryPage")
     @ApiOperation(value = "机构账户表")
-    public HttpResult<BasePageResult<SysDeptAccountEntity>> queryPageOrder(@RequestBody @Valid SysDeptAccountVO sysDeptAccountVO ) {
-        BasePageResult<SysDeptAccountEntity> result = sysDeptAccountService.queryByVo(sysDeptAccountVO);
+    public HttpResult<BasePageResult<SysDeptAccount>> queryPageOrder(@RequestBody @Valid SysDeptAccountVO sysDeptAccountVO ) {
+        BasePageResult<SysDeptAccount> result = sysDeptAccountService.queryByVo(sysDeptAccountVO);
         return HttpResult.ok("success", result);
     }
 
     @ApiOperation("机构账户表查询")
-    @PostMapping("sysDeptAccountPage")
+    @PostMapping("/sysDeptAccountPage")
     public HttpResult sysDeptAccountPage(@RequestBody SysDeptAccountDto sysDeptAccountDto){
         return HttpResult.ok("", sysDeptAccountService.getDept(sysDeptAccountDto));
     }
 
+    @ApiOperation("根据部门表提现人员id查询相关机构账户")
+    @PostMapping("/queryByUser")
+    public HttpResult queryByUser() {
+        return HttpResult.ok("", sysDeptAccountService.getDeptAccountByUser());
+    }
+
+    @ApiOperation("将机构账户金额提现")
+    @PostMapping("/withdrawDeptAccount")
+    public HttpResult withdrawDeptAccount(@RequestBody SysDeptAccount sysDeptAccount) {
+        return HttpResult.ok("", sysDeptAccountService.withdrawDeptAccount(sysDeptAccount));
+    }
+
+
+
 
     @PostMapping("/insert")
     @ApiOperation("提交")

+ 1 - 4
src/main/java/com/ydtech/modules/admin/controller/SysDeptAccountHistoryController.java

@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 
-import java.text.ParseException;
 
 @Api(tags = "机构账户历史明细表")
 @RequestMapping("/sysDeptAccountHistory")
@@ -30,8 +29,6 @@ public class SysDeptAccountHistoryController extends BaseController {
     @PostMapping("/queryPage")
     @ApiOperation(value = "机构账户表日志记录分页")
     public HttpResult getSysDeptAccountHistory(@RequestBody SysDeptAccountHistoryDto sysDeptAccountHistoryDto){
-        IPage<SysDeptAccountHistory> getSysDeptAccountHistory = sysDeptAccountHistoryService.selectList(sysDeptAccountHistoryDto);
-        PageResult pageResult = buildPageResponse(getSysDeptAccountHistory);
-        return HttpResult.ok(pageResult);
+        return HttpResult.ok("", sysDeptAccountHistoryService.selectList(sysDeptAccountHistoryDto));
     }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java

@@ -67,6 +67,9 @@ public class SysDeptController extends BaseController {
                 return HttpResult.error("机构已被设置来源无法修改");
             }
         }
+        if (record.getComlevel() == null && record.getWithdrawUser() != null) {
+            return HttpResult.error("机构级别为空,无法设置提现人员");
+        }
         return HttpResult.ok(sysDeptService.updateById(record));
     }
 

+ 5 - 0
src/main/java/com/ydtech/modules/admin/dao/SysDeptAccountHistoryMapper.java

@@ -2,8 +2,13 @@ package com.ydtech.modules.admin.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.admin.model.SysDeptAccountHistory;
+import com.ydtech.modules.admin.model.dto.SysDeptAccountHistoryDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface SysDeptAccountHistoryMapper extends BaseMapper<SysDeptAccountHistory> {
+    List<SysDeptAccountHistoryDto> getDeptHistory(@Param("sysDeptAccountHistoryDto") SysDeptAccountHistoryDto sysDeptAccountHistoryDto);
 }

+ 7 - 5
src/main/java/com/ydtech/modules/admin/dao/SysDeptAccountMapper.java

@@ -1,17 +1,19 @@
 package com.ydtech.modules.admin.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.github.pagehelper.IPage;
-import com.ydtech.modules.admin.model.QuTeamNum;
-import com.ydtech.modules.admin.model.SysDeptAccountEntity;
-import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
+import com.ydtech.modules.admin.model.SysDeptAccount;
 import com.ydtech.modules.admin.model.dto.SysDeptAccountDto;
+import com.ydtech.modules.admin.model.vo.SysDeptAccountByUserVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 @Mapper
-public interface SysDeptAccountMapper extends BaseMapper<SysDeptAccountEntity> {
+public interface SysDeptAccountMapper extends BaseMapper<SysDeptAccount> {
     List<SysDeptAccountDto> getDept(@Param("sysDeptAccountDto") SysDeptAccountDto sysDeptAccountDto);
+
+
+    List<SysDeptAccountByUserVo> getDeptAccountByUser(String userId);
+
 }

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/SysDept.java

@@ -130,6 +130,10 @@ public class SysDept implements Serializable {
     @ApiModelProperty(value = "机构来源(渠道、个代)")
     private String managementSource;
 
+    @TableField(value = "withdraw_user")
+    @ApiModelProperty(value = "提现人员")
+    private String withdrawUser;
+
     @TableField(exist = false)
     private List<SysDept> children;
 

+ 1 - 5
src/main/java/com/ydtech/modules/admin/model/SysDeptAccountEntity.java → src/main/java/com/ydtech/modules/admin/model/SysDeptAccount.java

@@ -1,13 +1,9 @@
 package com.ydtech.modules.admin.model;
 
-import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ydtech.core.page.PageRequest;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -17,7 +13,7 @@ import java.util.Date;
 @TableName(value = "sys_dept_account")
 @Data
 @ApiModel(value = "机构管理")
-public class SysDeptAccountEntity implements Serializable {
+public class SysDeptAccount implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 0 - 8
src/main/java/com/ydtech/modules/admin/model/dto/SysDeptAccountDto.java

@@ -1,10 +1,7 @@
 package com.ydtech.modules.admin.model.dto;
-
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -22,9 +19,4 @@ public class SysDeptAccountDto {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDateTime createTime;
 
-    @TableField(exist = false)
-    private int pageNo;
-
-    @TableField(exist = false)
-    private int pageSize;
 }

+ 7 - 1
src/main/java/com/ydtech/modules/admin/model/dto/SysDeptAccountHistoryDto.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.admin.model.dto;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.core.page.PageRequest;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -10,7 +11,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-public class SysDeptAccountHistoryDto extends PageRequest {
+public class SysDeptAccountHistoryDto{
     @ApiModelProperty(value = "历史记录ID")
     @TableId(value = "id")
     private String id;
@@ -19,7 +20,11 @@ public class SysDeptAccountHistoryDto extends PageRequest {
     @TableField(value = "dept_id")
     private String deptId;
 
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
     @TableField(value = "amount")
+    @ApiModelProperty(value = "金额")
     private BigDecimal amount;
 
     @ApiModelProperty(value = "剩余金额")
@@ -47,6 +52,7 @@ public class SysDeptAccountHistoryDto extends PageRequest {
 
     @ApiModelProperty(value = "创建时间")
     @TableField(value = "create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createTime;
 
     @ApiModelProperty(value = "备注")

+ 30 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysDeptAccountByUserVo.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SysDeptAccountByUserVo {
+    @ApiModelProperty("机构Id")
+    private String deptId;
+
+    @ApiModelProperty("机构名称")
+    private String deptName;
+
+    @ApiModelProperty("机构级别")
+    private String comLevel;
+
+    @ApiModelProperty("机构性质")
+    private String comattribute;
+
+    @ApiModelProperty("机构类型")
+    private String comtype;
+
+    @ApiModelProperty("余额")
+    private BigDecimal managementFee;
+
+    @ApiModelProperty("提现人员id")
+    private String userId;
+}

+ 1 - 1
src/main/java/com/ydtech/modules/admin/service/SysDeptAccountHistoryService.java

@@ -13,5 +13,5 @@ import java.text.ParseException;
 
 
 public interface SysDeptAccountHistoryService extends IService<SysDeptAccountHistory> {
-    IPage<SysDeptAccountHistory> selectList(SysDeptAccountHistoryDto sysDeptAccountHistoryDto);
+    IPage<SysDeptAccountHistoryDto> selectList(SysDeptAccountHistoryDto sysDeptAccountHistoryDto);
 }

+ 9 - 8
src/main/java/com/ydtech/modules/admin/service/SysDeptAccountService.java

@@ -2,18 +2,17 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.modules.admin.model.QuTeamNum;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysDeptAccountEntity;
-import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysDeptAccount;
 import com.ydtech.modules.admin.model.dto.SysDeptAccountDto;
+import com.ydtech.modules.admin.model.vo.SysDeptAccountByUserVo;
 import com.ydtech.modules.admin.model.vo.SysDeptAccountVO;
 import com.ydtech.modules.order.entity.BasePageResult;
-import com.ydtech.modules.ser.model.SerAnnualAuditOrder;
-import com.ydtech.modules.ser.model.vo.SerAnnualAuditOrderQueryVo;
 
-public interface SysDeptAccountService extends IService<SysDeptAccountEntity> {
-    BasePageResult<SysDeptAccountEntity> queryByVo(SysDeptAccountVO sysDeptAccountVO);
+import java.util.List;
+
+public interface SysDeptAccountService extends IService<SysDeptAccount> {
+    BasePageResult<SysDeptAccount> queryByVo(SysDeptAccountVO sysDeptAccountVO);
 
     boolean inert(SysDeptAccountVO sysDeptAccountVO);
 
@@ -23,6 +22,8 @@ public interface SysDeptAccountService extends IService<SysDeptAccountEntity> {
 
     IPage<SysDeptAccountDto> getDept(SysDeptAccountDto sysDeptAccountDto);
 
+    List<SysDeptAccountByUserVo> getDeptAccountByUser();
 
+    HttpResult withdrawDeptAccount(SysDeptAccount sysDeptAccount);
 
 }

+ 8 - 24
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountHistoryServiceImpl.java

@@ -1,18 +1,17 @@
 package com.ydtech.modules.admin.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ydtech.core.page.PageRequest;
 import com.ydtech.modules.admin.dao.SysDeptAccountHistoryMapper;
 import com.ydtech.modules.admin.model.SysDeptAccountHistory;
 import com.ydtech.modules.admin.model.dto.SysDeptAccountHistoryDto;
 import com.ydtech.modules.admin.service.SysDeptAccountHistoryService;
-import com.ydtech.modules.ser.dao.SerAnnualAuditOrderMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class SysDeptAccountHistoryServiceImpl extends ServiceImpl<SysDeptAccountHistoryMapper, SysDeptAccountHistory> implements SysDeptAccountHistoryService {
     @Autowired
@@ -21,26 +20,11 @@ public class SysDeptAccountHistoryServiceImpl extends ServiceImpl<SysDeptAccount
     @Autowired
     private SysDeptAccountHistoryMapper sysDeptAccountHistoryMapper;
     @Override
-    public IPage<SysDeptAccountHistory> selectList(SysDeptAccountHistoryDto sysDeptAccountHistoryDto) {
-        PageRequest pageRequest = new PageRequest();
-        pageRequest.setPageNum(sysDeptAccountHistoryDto.getPageNum());
-        pageRequest.setPageSize(sysDeptAccountHistoryDto.getPageSize());
-        Page page = PageRequest.buildPageRequest(pageRequest);
-        LambdaQueryWrapper<SysDeptAccountHistory> queryWrapper = new LambdaQueryWrapper<>();
-        //机构Id
-        if (sysDeptAccountHistoryDto.getDeptId() != null && !"".equals(sysDeptAccountHistoryDto.getDeptId())) {
-            queryWrapper.likeRight(SysDeptAccountHistory::getDeptId, sysDeptAccountHistoryDto.getDeptId());
-        }
-        //提现、收入
-        if (sysDeptAccountHistoryDto.getDocumentary() != null && !"".equals(sysDeptAccountHistoryDto.getDocumentary())) {
-            queryWrapper.eq(SysDeptAccountHistory::getDocumentary, sysDeptAccountHistoryDto.getDocumentary());
-        }
-        //来源订单
-        if (sysDeptAccountHistoryDto.getSuborder() != null && !"".equals(sysDeptAccountHistoryDto.getSuborder())) {
-            queryWrapper.eq(SysDeptAccountHistory::getSuborder, sysDeptAccountHistoryDto.getSuborder());
-        }
-        Page pageData = sysDeptAccountHistoryMapper.selectPage(page, queryWrapper);
-
-        return pageData;
+    public IPage<SysDeptAccountHistoryDto> selectList(SysDeptAccountHistoryDto sysDeptAccountHistoryDto) {
+        Page<SysDeptAccountHistoryDto> page = new Page<>();
+        List<SysDeptAccountHistoryDto> deptHistoryList = sysDeptAccountHistoryMapper.getDeptHistory(sysDeptAccountHistoryDto);
+        page.setRecords(deptHistoryList);
+        page.setTotal(deptHistoryList.size());
+        return page;
     }
 }

+ 41 - 15
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountServiceImpl.java

@@ -1,19 +1,21 @@
 package com.ydtech.modules.admin.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysDeptAccountMapper;
-import com.ydtech.modules.admin.model.QuTeamNum;
-import com.ydtech.modules.admin.model.SysDeptAccountEntity;
+import com.ydtech.modules.admin.model.SysDeptAccount;
+import com.ydtech.modules.admin.model.SysDeptAccountHistory;
 import com.ydtech.modules.admin.model.dto.SysDeptAccountDto;
+import com.ydtech.modules.admin.model.vo.SysDeptAccountByUserVo;
 import com.ydtech.modules.admin.model.vo.SysDeptAccountVO;
 import com.ydtech.modules.admin.service.SysDeptAccountService;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,17 +24,20 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 @Service
-public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper, SysDeptAccountEntity>  implements SysDeptAccountService {
+public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper, SysDeptAccount>  implements SysDeptAccountService {
+    @Autowired
+    private SysDeptAccountService sysDeptAccountService;
+
     @Autowired
     private SysDeptAccountMapper sysDeptAccountMapper;
 
     @Override
-    public BasePageResult<SysDeptAccountEntity> queryByVo(SysDeptAccountVO sysDeptAccountVO) {
+    public BasePageResult<SysDeptAccount> queryByVo(SysDeptAccountVO sysDeptAccountVO) {
 
-        Page<SysDeptAccountEntity> page = new Page<>(sysDeptAccountVO.getPageNum(), sysDeptAccountVO.getPageSize());
-        QueryWrapper<SysDeptAccountEntity> wrapper = new QueryWrapper<>();
+        Page<SysDeptAccount> page = new Page<>(sysDeptAccountVO.getPageNum(), sysDeptAccountVO.getPageSize());
+        QueryWrapper<SysDeptAccount> wrapper = new QueryWrapper<>();
 
-        Page<SysDeptAccountEntity> sysUserAccountHistoryPage  = page(page, wrapper);
+        Page<SysDeptAccount> sysUserAccountHistoryPage  = page(page, wrapper);
         return new BasePageResult<>(sysDeptAccountVO.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(),
                 sysUserAccountHistoryPage.getRecords());
     }
@@ -45,12 +50,33 @@ public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper,
         return page;
     }
 
+    public List<SysDeptAccountByUserVo> getDeptAccountByUser() {
+        List<SysDeptAccountByUserVo> deptAccountByUserList = sysDeptAccountMapper.getDeptAccountByUser(BaseController.getUser().getId());
+        return deptAccountByUserList;
+    }
+
+    public HttpResult withdrawDeptAccount(SysDeptAccount sysDeptAccount) {
+        SysDeptAccount deptAccount = sysDeptAccountMapper.selectById(sysDeptAccount.getDeptId());
+        // 减去提现金额
+        deptAccount.setManagementFee(deptAccount.getManagementFee().subtract(sysDeptAccount.getManagementFee()));
+        sysDeptAccountService.updateById(sysDeptAccount);
+        // 机构历史明细生成提现明细
+        SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
+        sysDeptAccountHistory.setId(IdGenerate.nextId());
+        sysDeptAccountHistory.setDeptId(sysDeptAccount.getDeptId());
+        sysDeptAccountHistory.setAmount(sysDeptAccount.getManagementFee());
+        sysDeptAccountHistory.setSurplusAmount(deptAccount.getManagementFee());
+        sysDeptAccountHistory.setSuborder(null);
+
+        return HttpResult.ok("", sysDeptAccount);
+    }
+
     @Override
     @Transactional
     public boolean inert(SysDeptAccountVO sysDeptAccountVO) {
-        SysDeptAccountEntity sysDeptAccountEntity = new SysDeptAccountEntity();
-        BeanUtils.copyProperties(sysDeptAccountVO, sysDeptAccountEntity);
-        return super.save(sysDeptAccountEntity);
+        SysDeptAccount sysDeptAccount = new SysDeptAccount();
+        BeanUtils.copyProperties(sysDeptAccountVO, sysDeptAccount);
+        return super.save(sysDeptAccount);
 
     }
 
@@ -63,9 +89,9 @@ public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper,
     @Override
     @Transactional
     public void uodate(SysDeptAccountVO sysDeptAccountVO) {
-        SysDeptAccountEntity sysDeptAccountEntity = new SysDeptAccountEntity();
-        BeanUtils.copyProperties(sysDeptAccountVO, sysDeptAccountEntity);
-        super.updateById(sysDeptAccountEntity);
+        SysDeptAccount sysDeptAccount = new SysDeptAccount();
+        BeanUtils.copyProperties(sysDeptAccountVO, sysDeptAccount);
+        super.updateById(sysDeptAccount);
     }
 
 }

+ 1 - 1
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -21,7 +21,7 @@ public interface FeeRuleSchemeService {
      * @param agreementId
      * @param businessNo
      */
-    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
+//    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
 
     /**
      * 查询费用明细

+ 210 - 210
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -1120,203 +1120,203 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         return feeSchemeReqDto;
     }
 
-    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId, String businessNo) {
-        BigDecimal jqNoTaxPremium = new BigDecimal(0);
-        BigDecimal syNoTaxPremium = new BigDecimal(0);
-        InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
-        List<AccidentResponseVo> accidentList = quoteRespVo.getAccident();
-        /*BigDecimal accidentActualPremium = new BigDecimal(0);
-        for(AccidentResponseVo accidentResponseVo: accidentList){
-            accidentActualPremium = new BigDecimal(accidentResponseVo.getActualPremium());
-        }*/
-        FeeSchemeReqDto feeSchemeReqDto = this.getFeeSchemeInfo(quoteInfoVo, quoteRespVo, agreementId, insOrders.getProductid());
-        matchTheUndwrtRules(feeSchemeReqDto);
-        FeeSchemeResDto feeSchemeResDto = this.matchTheAppropriateFees(feeSchemeReqDto);
-        InsFeeOrder insFeeOrder = new InsFeeOrder(feeSchemeReqDto, feeSchemeResDto, businessNo);
-        PtlAgreement agreement = ptlAgreementService.getById(agreementId);
-        //先通过含税保费计算出不含税保费 公式 总保费/(1+增值税率) 目前增值税率是0.06
-        if (insFeeOrder.getJqPremium().doubleValue() > 0) {
-            //默认用含税保费计算
-            jqNoTaxPremium = insFeeOrder.getJqPremium();
-            //如果协议中配置为不含税结算时,计算不含税保费
-            if (StringUtils.isNotEmpty(agreement.getWithTax()) && "否".equals(agreement.getWithTax())) {
-                jqNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1 + 0.06), BigDecimal.ROUND_HALF_UP, 2);
-            }
-            insFeeOrder.setJqNoTaxPremium(jqNoTaxPremium);
-            //交强险总费用
-            insFeeOrder.setJqCostsPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqCostsProportion()));
-            //监管费比例
-            if ("1".equals(feeSchemeReqDto.getIsNewCar())) {
-                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
-            } else if ("0".equals(feeSchemeReqDto.getIsNewCar())) {
-                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
-            } else {
-                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(0));
-            }
-            //监管费
-            insFeeOrder.setJqSuperviseCostsPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqSuperviseCostsProportion()));
-            //溢出费比例 先搁置放0
-            insFeeOrder.setJqSpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
-            //溢出费 先搁置放0
-            insFeeOrder.setJqSpilloverPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqSpilloverProportion()));
-        }
-        if (insFeeOrder.getSyPremium().doubleValue() > 0) {
-            //默认用含税保费计算
-            syNoTaxPremium = insFeeOrder.getSyPremium();
-            //如果协议中配置为不含税结算时,计算不含税保费
-            if (StringUtils.isNotEmpty(agreement.getWithTax()) && "否".equals(agreement.getWithTax())) {
-                syNoTaxPremium = insFeeOrder.getSyPremium().divide(BigDecimal.valueOf(1 + 0.06), BigDecimal.ROUND_HALF_UP, 2);
-            }
-            insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
-            //商业险总费用
-            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSyCostsProportion()));
-            //监管费比例
-            if ("1".equals(feeSchemeReqDto.getIsNewCar())) {
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyNewCarCostsProportion()));
-            } else if ("0".equals(feeSchemeReqDto.getIsNewCar())) {
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyOldCarCostsProportion()));
-            } else {
-                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
-            }
-            //监管费
-            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSySuperviseCostsProportion()));
-            //溢出费比例 先搁置放0
-            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getSySpilloverProportion()));
-            //溢出费 先搁置放0
-            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSySpilloverProportion()));
-        }
-
-        if (jqNoTaxPremium.doubleValue() > 0 || syNoTaxPremium.doubleValue() > 0) {
-            BigDecimal totalNoTaxPremium = jqNoTaxPremium.add(syNoTaxPremium);
-            SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
-            /**
-             * 机构管理费比例逻辑
-             * 当前出单员的机构编码找他的上一级就是五级
-             * 机构层级划分方式
-             * 99 总公司              一级
-             * 9914山西分公司         二级
-             * 991401太原中支         三级
-             * 99140105小店中支       四级
-             * 9914010501 营销服务部  五级
-             *            1团队       无机构层级
-             */
-
-            //判断出单员归属机构层级
-            String parentId = sysUser.getDeptId();
-            String comlevel = "";
-            do {//循环操作
-                SysDept sysDeptTemp = sysDeptService.getById(parentId);
-                if (sysDeptTemp != null && StringUtils.isNotEmpty(sysDeptTemp.getParentId())) {
-                    parentId = sysDeptTemp.getParentId();
-                } else {
-                    break;
-                }
-                if (StringUtils.isEmpty(sysDeptTemp.getComlevel())) {
-                    continue;
-                } else {
-                    comlevel = sysDeptTemp.getComlevel();
-                }
-                //当机构层级为五级的时候,获取所有的机构费用比例
-                if (sysDeptTemp != null && "5".equals(sysDeptTemp.getComlevel())) {
-                    //五级机构管理费用比例
-                    insFeeOrder.setFifthDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeFifth()));
-                    insFeeOrder.setFifthDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFifthDeptProportion()));
-                    //四级机构管理费用比例
-                    insFeeOrder.setForthDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeForth()));
-                    insFeeOrder.setForthDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getForthDeptProportion()));
-                    //三级机构管理费用比例
-                    insFeeOrder.setThirdDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeThird()));
-                    insFeeOrder.setThirdDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getThirdDeptProportion()));
-                    //二级机构管理费用比例
-                    insFeeOrder.setSecondDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeSecond()));
-                    insFeeOrder.setSecondDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getSecondDeptProportion()));
-                    //一级机构管理费用比例
-                    insFeeOrder.setFirstDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFee()));
-                    insFeeOrder.setFirstDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFirstDeptProportion()));
-                    //取到第一层级时结束
-                    break;
-                }
-            } while (!"1".equals(comlevel));
-
-            //一级分销比例   推荐人
-            //二级分销比例
-            //三级分销比例
-            /**
-             * 分销一级、二级、三级存值取团队配置的分销佣金比例,若该团队走三级分销模式,当前出单员出单时,跟单的分销取值方式为:
-             * 根据出单员的推荐人向上找三级,若可以找到,则跟单存一、二、三分销比例;
-             * 若向上只能找到一级或者二级,则跟单存一级或者一级、二级
-             * 比如 A 1 B 2 C 3 D  若D出单 则给 C 3个 B 2个 A 1个;C出单给 B 3个 A 2个
-             * 第一步,先判断团队配置的分销模式
-             * 第二步,根据分销模式找上级存值相应分销比例
-             * 第三步,仅有一个上级的情况分销比例存啥
-             */
-            List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
-             new Object[]{sysUser.getDeptId()});
-
-            if (esmRetailList != null && !esmRetailList.isEmpty()) {
-                EsmRetail esmRetail = esmRetailList.get(0);
-                if (esmRetail != null) {
-                    int cycleIndex = 0;
-                    if ("3".equals(esmRetail.getRetailtype())) {//团队配置了三级分销模式
-                        cycleIndex = 3;
-                    } else if ("2".equals(esmRetail.getRetailtype())) {//团队配置了二级分销模式
-                        cycleIndex = 2;
-                    } else if ("1".equals(esmRetail.getRetailtype())) {//团队配置了一级分销模式
-                        cycleIndex = 1;
-                    } else if ("0".equals(esmRetail.getRetailtype())) {//团队没有配置分销模式
-                        cycleIndex = 0;
-                    }
-
-                    //利用当前工号,循环向上找推荐人
-                    String userId = sysUser.getId();
-                    int breakCycle = 99999999;
-                    for (int i = 0; i <= cycleIndex; i++) {
-                        EsmUserReferrer userReferrer = esmUserReferrerService.getById(userId);
-                        if (userReferrer.getReferrerId().equals(userReferrer.getId())) {//团队长,没有上级
-                            //跳出循环
-                            breakCycle = i;
-                            break;
-                        } else {
-                            userId = userReferrer.getReferrerId();
-                        }
-                    }
-                    //breakCycle是3,当前工号的上级的上级的上级就是团队长
-                    //breakCycle是2,当前工号的上级的上级就是团队长
-                    //breakCycle是1,当前工号的上级就是团队长
-                    //breakCycle是0,当前工号就是团队长
-
-                    if ("3".equals(esmRetail.getRetailtype())) {//团队配置了三级分销模式
-                        if (breakCycle == 99999999 || breakCycle == 3) {
-                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
-                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
-                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
-                        } else if (breakCycle == 2) {
-                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
-                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
-                        } else if (breakCycle == 1) {
-                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
-                        }
-                    } else if ("2".equals(esmRetail.getRetailtype())) {//团队配置了二级分销模式
-                        if (breakCycle == 99999999 || breakCycle == 3 || breakCycle == 2) {
-                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
-                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
-                        } else if (breakCycle == 1) {
-                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
-                        }
-                    } else if ("1".equals(esmRetail.getRetailtype())) {//团队配置了一级分销模式
-                        if (breakCycle == 99999999 || breakCycle == 3 || breakCycle == 2 || breakCycle == 1) {
-                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
-                        }
-                    }
-                    insFeeOrder.setFirstRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFirstRetailProportion()));
-                    insFeeOrder.setSecondRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getSecondRetailProportion()));
-                    insFeeOrder.setThirdRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getThirdRetailProportion()));
-
-                }
-            }
-        }
-        insFeeOrderService.insertCompanyAndOrders(insFeeOrder);
-    }
+//    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId, String businessNo) {
+//        BigDecimal jqNoTaxPremium = new BigDecimal(0);
+//        BigDecimal syNoTaxPremium = new BigDecimal(0);
+//        InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
+//        List<AccidentResponseVo> accidentList = quoteRespVo.getAccident();
+//        /*BigDecimal accidentActualPremium = new BigDecimal(0);
+//        for(AccidentResponseVo accidentResponseVo: accidentList){
+//            accidentActualPremium = new BigDecimal(accidentResponseVo.getActualPremium());
+//        }*/
+//        FeeSchemeReqDto feeSchemeReqDto = this.getFeeSchemeInfo(quoteInfoVo, quoteRespVo, agreementId, insOrders.getProductid());
+//        matchTheUndwrtRules(feeSchemeReqDto);
+//        FeeSchemeResDto feeSchemeResDto = this.matchTheAppropriateFees(feeSchemeReqDto);
+//        InsFeeOrder insFeeOrder = new InsFeeOrder(feeSchemeReqDto, feeSchemeResDto, businessNo);
+//        PtlAgreement agreement = ptlAgreementService.getById(agreementId);
+//        //先通过含税保费计算出不含税保费 公式 总保费/(1+增值税率) 目前增值税率是0.06
+//        if (insFeeOrder.getJqPremium().doubleValue() > 0) {
+//            //默认用含税保费计算
+//            jqNoTaxPremium = insFeeOrder.getJqPremium();
+//            //如果协议中配置为不含税结算时,计算不含税保费
+//            if (StringUtils.isNotEmpty(agreement.getWithTax()) && "否".equals(agreement.getWithTax())) {
+//                jqNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1 + 0.06), BigDecimal.ROUND_HALF_UP, 2);
+//            }
+//            insFeeOrder.setJqNoTaxPremium(jqNoTaxPremium);
+//            //交强险总费用
+//            insFeeOrder.setJqCostsPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqCostsProportion()));
+//            //监管费比例
+//            if ("1".equals(feeSchemeReqDto.getIsNewCar())) {
+//                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
+//            } else if ("0".equals(feeSchemeReqDto.getIsNewCar())) {
+//                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
+//            } else {
+//                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(0));
+//            }
+//            //监管费
+//            insFeeOrder.setJqSuperviseCostsPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqSuperviseCostsProportion()));
+//            //溢出费比例 先搁置放0
+//            insFeeOrder.setJqSpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
+//            //溢出费 先搁置放0
+//            insFeeOrder.setJqSpilloverPremiums(getPremium(jqNoTaxPremium, insFeeOrder.getJqSpilloverProportion()));
+//        }
+//        if (insFeeOrder.getSyPremium().doubleValue() > 0) {
+//            //默认用含税保费计算
+//            syNoTaxPremium = insFeeOrder.getSyPremium();
+//            //如果协议中配置为不含税结算时,计算不含税保费
+//            if (StringUtils.isNotEmpty(agreement.getWithTax()) && "否".equals(agreement.getWithTax())) {
+//                syNoTaxPremium = insFeeOrder.getSyPremium().divide(BigDecimal.valueOf(1 + 0.06), BigDecimal.ROUND_HALF_UP, 2);
+//            }
+//            insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
+//            //商业险总费用
+//            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSyCostsProportion()));
+//            //监管费比例
+//            if ("1".equals(feeSchemeReqDto.getIsNewCar())) {
+//                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyNewCarCostsProportion()));
+//            } else if ("0".equals(feeSchemeReqDto.getIsNewCar())) {
+//                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getSyOldCarCostsProportion()));
+//            } else {
+//                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
+//            }
+//            //监管费
+//            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSySuperviseCostsProportion()));
+//            //溢出费比例 先搁置放0
+//            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getSySpilloverProportion()));
+//            //溢出费 先搁置放0
+//            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium, insFeeOrder.getSySpilloverProportion()));
+//        }
+//
+//        if (jqNoTaxPremium.doubleValue() > 0 || syNoTaxPremium.doubleValue() > 0) {
+//            BigDecimal totalNoTaxPremium = jqNoTaxPremium.add(syNoTaxPremium);
+//            SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+//            /**
+//             * 机构管理费比例逻辑
+//             * 当前出单员的机构编码找他的上一级就是五级
+//             * 机构层级划分方式
+//             * 99 总公司              一级
+//             * 9914山西分公司         二级
+//             * 991401太原中支         三级
+//             * 99140105小店中支       四级
+//             * 9914010501 营销服务部  五级
+//             *            1团队       无机构层级
+//             */
+//
+//            //判断出单员归属机构层级
+//            String parentId = sysUser.getDeptId();
+//            String comlevel = "";
+//            do {//循环操作
+//                SysDept sysDeptTemp = sysDeptService.getById(parentId);
+//                if (sysDeptTemp != null && StringUtils.isNotEmpty(sysDeptTemp.getParentId())) {
+//                    parentId = sysDeptTemp.getParentId();
+//                } else {
+//                    break;
+//                }
+//                if (StringUtils.isEmpty(sysDeptTemp.getComlevel())) {
+//                    continue;
+//                } else {
+//                    comlevel = sysDeptTemp.getComlevel();
+//                }
+//                //当机构层级为五级的时候,获取所有的机构费用比例
+//                if (sysDeptTemp != null && "5".equals(sysDeptTemp.getComlevel())) {
+//                    //五级机构管理费用比例
+//                    insFeeOrder.setFifthDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeFifth()));
+//                    insFeeOrder.setFifthDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFifthDeptProportion()));
+//                    //四级机构管理费用比例
+//                    insFeeOrder.setForthDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeForth()));
+//                    insFeeOrder.setForthDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getForthDeptProportion()));
+//                    //三级机构管理费用比例
+//                    insFeeOrder.setThirdDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeThird()));
+//                    insFeeOrder.setThirdDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getThirdDeptProportion()));
+//                    //二级机构管理费用比例
+//                    insFeeOrder.setSecondDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFeeSecond()));
+//                    insFeeOrder.setSecondDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getSecondDeptProportion()));
+//                    //一级机构管理费用比例
+//                    insFeeOrder.setFirstDeptProportion(BigDecimal.valueOf(sysDeptTemp.getManagementFee()));
+//                    insFeeOrder.setFirstDeptPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFirstDeptProportion()));
+//                    //取到第一层级时结束
+//                    break;
+//                }
+//            } while (!"1".equals(comlevel));
+//
+//            //一级分销比例   推荐人
+//            //二级分销比例
+//            //三级分销比例
+//            /**
+//             * 分销一级、二级、三级存值取团队配置的分销佣金比例,若该团队走三级分销模式,当前出单员出单时,跟单的分销取值方式为:
+//             * 根据出单员的推荐人向上找三级,若可以找到,则跟单存一、二、三分销比例;
+//             * 若向上只能找到一级或者二级,则跟单存一级或者一级、二级
+//             * 比如 A 1 B 2 C 3 D  若D出单 则给 C 3个 B 2个 A 1个;C出单给 B 3个 A 2个
+//             * 第一步,先判断团队配置的分销模式
+//             * 第二步,根据分销模式找上级存值相应分销比例
+//             * 第三步,仅有一个上级的情况分销比例存啥
+//             */
+//            List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
+//             new Object[]{sysUser.getDeptId()});
+//
+//            if (esmRetailList != null && !esmRetailList.isEmpty()) {
+//                EsmRetail esmRetail = esmRetailList.get(0);
+//                if (esmRetail != null) {
+//                    int cycleIndex = 0;
+//                    if ("3".equals(esmRetail.getRetailtype())) {//团队配置了三级分销模式
+//                        cycleIndex = 3;
+//                    } else if ("2".equals(esmRetail.getRetailtype())) {//团队配置了二级分销模式
+//                        cycleIndex = 2;
+//                    } else if ("1".equals(esmRetail.getRetailtype())) {//团队配置了一级分销模式
+//                        cycleIndex = 1;
+//                    } else if ("0".equals(esmRetail.getRetailtype())) {//团队没有配置分销模式
+//                        cycleIndex = 0;
+//                    }
+//
+//                    //利用当前工号,循环向上找推荐人
+//                    String userId = sysUser.getId();
+//                    int breakCycle = 99999999;
+//                    for (int i = 0; i <= cycleIndex; i++) {
+//                        EsmUserReferrer userReferrer = esmUserReferrerService.getById(userId);
+//                        if (userReferrer.getReferrerId().equals(userReferrer.getId())) {//团队长,没有上级
+//                            //跳出循环
+//                            breakCycle = i;
+//                            break;
+//                        } else {
+//                            userId = userReferrer.getReferrerId();
+//                        }
+//                    }
+//                    //breakCycle是3,当前工号的上级的上级的上级就是团队长
+//                    //breakCycle是2,当前工号的上级的上级就是团队长
+//                    //breakCycle是1,当前工号的上级就是团队长
+//                    //breakCycle是0,当前工号就是团队长
+//
+//                    if ("3".equals(esmRetail.getRetailtype())) {//团队配置了三级分销模式
+//                        if (breakCycle == 99999999 || breakCycle == 3) {
+//                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
+//                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
+//                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
+//                        } else if (breakCycle == 2) {
+//                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
+//                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
+//                        } else if (breakCycle == 1) {
+//                            insFeeOrder.setThirdRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate3()));
+//                        }
+//                    } else if ("2".equals(esmRetail.getRetailtype())) {//团队配置了二级分销模式
+//                        if (breakCycle == 99999999 || breakCycle == 3 || breakCycle == 2) {
+//                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
+//                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
+//                        } else if (breakCycle == 1) {
+//                            insFeeOrder.setSecondRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate2()));
+//                        }
+//                    } else if ("1".equals(esmRetail.getRetailtype())) {//团队配置了一级分销模式
+//                        if (breakCycle == 99999999 || breakCycle == 3 || breakCycle == 2 || breakCycle == 1) {
+//                            insFeeOrder.setFirstRetailProportion(BigDecimal.valueOf(esmRetail.getDisrate1()));
+//                        }
+//                    }
+//                    insFeeOrder.setFirstRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getFirstRetailProportion()));
+//                    insFeeOrder.setSecondRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getSecondRetailProportion()));
+//                    insFeeOrder.setThirdRetailPremiums(getPremium(totalNoTaxPremium, insFeeOrder.getThirdRetailProportion()));
+//
+//                }
+//            }
+//        }
+//        insFeeOrderService.insertCompanyAndOrders(insFeeOrder);
+//    }
 
     @Override
     public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
@@ -2005,13 +2005,13 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
 //        resultList.add(feeResultVo9);
 //        return resultList;
 //    }
-
-    /**
-     * 按照组合单模式获取费用明细
-     *
-     * @param insFeeOrder
-     * @return
-     */
+//
+//    /**
+//     * 按照组合单模式获取费用明细
+//     *
+//     * @param insFeeOrder
+//     * @return
+//     */
 //    private QueryOrderFeeVo packageOrderFeeInfoAll(InsFeeOrder insFeeOrder) {
 //        QueryOrderFeeVo queryOrderFeeVo = new QueryOrderFeeVo();
 //        InsFeeOrder jqInsFeeOrderTemp = new InsFeeOrder();
@@ -2071,12 +2071,12 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
 //        return queryOrderFeeVo;
 //    }
 
-    /**
-     * 按照单险种方式获取费用明细
-     *
-     * @param insFeeOrder
-     * @return
-     */
+//    /**
+//     * 按照单险种方式获取费用明细
+//     *
+//     * @param insFeeOrder
+//     * @return
+//     */
 //    private OrderFeeVo packageOrderFeeInfoOne(InsFeeOrder insFeeOrder) {
 //        OrderFeeVo orderFeeVo = new OrderFeeVo();
 //        orderFeeVo.setFirstDeptPremiums(convertToString(insFeeOrder.getFirstDeptPremiums()));

+ 4 - 6
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -1,11 +1,10 @@
 package com.ydtech.modules.fnc.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
 import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysDeptAccountEntity;
+import com.ydtech.modules.admin.model.SysDeptAccount;
 import com.ydtech.modules.admin.model.SysDeptAccountHistory;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
@@ -41,7 +40,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Date;
@@ -192,8 +190,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                     // 根据循环次数确定机构ID的长度,第五级为11
                     String levelDeptId = deptid.substring(0, (i == 5) ? 11 : i * 2);
                     // 获取对应级别的机构信息
-                    SysDeptAccountEntity levelSysDeptAccount = sysDeptAccountService.getOne(new LambdaQueryWrapper<SysDeptAccountEntity>()
-                            .eq(SysDeptAccountEntity::getDeptId, levelDeptId));
+                    SysDeptAccount levelSysDeptAccount = sysDeptAccountService.getOne(new LambdaQueryWrapper<SysDeptAccount>()
+                            .eq(SysDeptAccount::getDeptId, levelDeptId));
 
                     // 初始化管理费总额为0
                     BigDecimal sumManagementFee = BigDecimal.ZERO;
@@ -243,7 +241,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                         sysDeptAccountHistoryService.save(sysDeptAccountHistory);
                     } else {
                         // 如果机构信息为空,新建机构信息并记录历史
-                        SysDeptAccountEntity sysDeptAccount = new SysDeptAccountEntity();
+                        SysDeptAccount sysDeptAccount = new SysDeptAccount();
                         sysDeptAccount.setDeptId(levelDeptId);
                         sysDeptAccount.setManagementFee(sumManagementFee);
                         sysDeptAccount.setCreateTime(new Date());

+ 46 - 0
src/main/resources/mapper/modules/admin/SysDeptAccountHistoryMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysDeptAccountHistoryMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.dto.SysDeptAccountHistoryDto">
+        <id column="id" jdbcType="VARCHAR" property="id"/>
+        <result column="dept_id" jdbcType="VARCHAR" property="deptId"/>
+        <result column="name" jdbcType="VARCHAR" property="deptName"/>
+        <result column="amount" jdbcType="DECIMAL" property="amount"/>
+        <result column="surplus_amount" jdbcType="DECIMAL" property="surplusAmount"/>
+        <result column="documentary" jdbcType="VARCHAR" property="documentary"/>
+        <result column="suborder" jdbcType="VARCHAR" property="suborder"/>
+        <result column="user_id" jdbcType="VARCHAR" property="userId"/>
+        <result column="remark" jdbcType="VARCHAR" property="remark"/>
+        <result column="create_date" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+
+    <select id="getDeptHistory" resultMap="BaseResultMap">
+        SELECT
+        a.id,
+        a.dept_id,
+        b.NAME,
+        a.amount,
+        a.surplus_amount,
+        a.documentary,
+        a.suborder,
+        a.user_id,
+        a.remark,
+        DATE(a.create_time) as create_date
+        FROM
+        sys_dept_account_history a
+        LEFT JOIN sys_dept b ON a.dept_id = b.id
+        where
+        b.del_flag = 0
+        <if test="sysDeptAccountHistoryDto.deptId != null and sysDeptAccountHistoryDto.deptId != ''">
+            AND a.dept_id = #{sysDeptAccountHistoryDto.deptId}
+        </if>
+        <if test="sysDeptAccountHistoryDto.deptName != null and sysDeptAccountHistoryDto.deptName != ''">
+            AND b.name = #{sysDeptAccountHistoryDto.deptName}
+        </if>
+        <if test="sysDeptAccountHistoryDto.documentary != null and sysDeptAccountHistoryDto.documentary != ''">
+            AND a.documentary = #{sysDeptAccountHistoryDto.documentary}
+        </if>
+    </select>
+
+</mapper>

+ 52 - 0
src/main/resources/mapper/modules/admin/SysDeptAccountMapper.xml

@@ -28,4 +28,56 @@
             AND b.name like concat(#{sysDeptAccountDto.deptName},'%')
         </if>
     </select>
+
+
+    <resultMap id="SysAccountByUserMap" type="com.ydtech.modules.admin.model.vo.SysDeptAccountByUserVo">
+        <id column="id" jdbcType="VARCHAR" property="deptId"/>
+        <result column="name" jdbcType="VARCHAR" property="deptName"/>
+        <result column="comLevel" jdbcType="VARCHAR" property="comLevel"/>
+        <result column="comattribute" jdbcType="VARCHAR" property="comattribute"/>
+        <result column="comtype" jdbcType="VARCHAR" property="comtype"/>
+        <result column="management_fee" jdbcType="DECIMAL" property="managementFee"/>
+        <result column="withdraw_user" jdbcType="VARCHAR" property="userId"/>
+    </resultMap>
+
+    <select id="getDeptAccountByUser" resultMap="SysAccountByUserMap">
+        SELECT
+        a.id,
+        a.name,
+        a.comlevel,
+        a.comattribute,
+        a.comtype,
+        b.management_fee,
+        a.withdraw_user
+        FROM
+        sys_dept a
+        RIGHT JOIN sys_dept_account b ON a.id = b.dept_id
+        where
+        a.del_flag = 0
+        <if test="userId != null and userId != ''">
+            AND a.withdraw_user = #{userId}
+        </if>
+    </select>
+
+    <select id="getDeptAccountByDept" resultMap="SysAccountByUserMap">
+        SELECT
+        a.id,
+        a.name,
+        a.comlevel,
+        a.comattribute,
+        a.comtype,
+        b.management_fee,
+        a.withdraw_user
+        FROM
+        sys_dept a
+        RIGHT JOIN sys_dept_account b ON a.id = b.dept_id
+        where
+        a.del_flag = 0
+        <if test="deptId != null and deptId != ''">
+            AND a.id = #{deptId}
+        </if>
+    </select>
+
+
+
 </mapper>