瀏覽代碼

Merge remote-tracking branch 'origin/master'

caozj 2 年之前
父節點
當前提交
2b9e1e56bf
共有 25 個文件被更改,包括 716 次插入6 次删除
  1. 13 5
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  2. 11 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java
  3. 5 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  4. 2 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml
  5. 38 0
      hx-sale/src/main/java/com/fjhx/sale/controller/commission/CommissionController.java
  6. 33 0
      hx-sale/src/main/java/com/fjhx/sale/controller/commission/CommissionRuleController.java
  7. 13 0
      hx-sale/src/main/java/com/fjhx/sale/controller/statement/SaleStatementController.java
  8. 22 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionDto.java
  9. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionRuleDto.java
  10. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionRuleSelectDto.java
  11. 26 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionSelectDto.java
  12. 115 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/po/Commission.java
  13. 54 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/po/CommissionRule.java
  14. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/vo/CommissionRuleVo.java
  15. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/commission/vo/CommissionVo.java
  16. 27 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/commission/CommissionMapper.java
  17. 17 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/commission/CommissionRuleMapper.java
  18. 24 0
      hx-sale/src/main/java/com/fjhx/sale/service/commission/CommissionRuleService.java
  19. 30 0
      hx-sale/src/main/java/com/fjhx/sale/service/commission/CommissionService.java
  20. 35 0
      hx-sale/src/main/java/com/fjhx/sale/service/commission/impl/CommissionRuleServiceImpl.java
  21. 159 0
      hx-sale/src/main/java/com/fjhx/sale/service/commission/impl/CommissionServiceImpl.java
  22. 3 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java
  23. 6 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java
  24. 11 0
      hx-sale/src/main/resources/mapper/commission/CommissionMapper.xml
  25. 4 0
      hx-sale/src/main/resources/mapper/commission/CommissionRuleMapper.xml

+ 13 - 5
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -281,7 +281,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         //赋值维多利亚组合产品信息
         JSONObject json = JSONObject.parseObject(result.getVictoriatouristJson());
         List<Long> ids = new ArrayList<>();
-        if(ObjectUtil.isNotEmpty(json)){
+        if(ObjectUtil.isNotEmpty(json) && ObjectUtil.isNotEmpty(json.getJSONArray("productCombinationList"))){
             JSONArray productCombinationList = json.getJSONArray("productCombinationList");
             for (int i=0;i<productCombinationList.size();i++) {
                 JSONObject item = productCombinationList.getJSONObject(i);
@@ -316,8 +316,12 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         productInfoDto.setCode(CodeEnum.PRODUCT.getCode());
         // 排除名称重复
         this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
-        // 排除自定义编码重复
-        this.nameDuplication(ProductInfo::getCustomCode, productInfoDto.getCustomCode(), "产品自定义编码重复");
+        // 排除不为空的自定义编码重复
+        long count = this.count(q -> q.eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode()).ne(ProductInfo::getCustomCode,""));
+        if (count != 0) {
+            throw new ServiceException("产品自定义编码重复");
+        }
+
         this.save(productInfoDto);
         ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
     }
@@ -472,8 +476,12 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         productInfoDto.setCode(null);
         // 排除名称重复
         this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), productInfoDto.getId(), "产品名称重复");
-        // 排除自定义编码重复
-        this.nameDuplication(ProductInfo::getCustomCode, productInfoDto.getCustomCode(), productInfoDto.getId(), "产品自定义编码重复");
+        // 排除不为空的自定义编码重复
+        long count = this.count(q -> q.ne(ProductInfo::getId,productInfoDto.getId())
+                .eq(ProductInfo::getCustomCode, productInfoDto.getCustomCode()).ne(ProductInfo::getCustomCode,""));
+        if (count != 0) {
+            throw new ServiceException("产品自定义编码重复");
+        }
         this.updateById(productInfoDto);
         ObsFileUtil.editFile(productInfoDto.getFileList(), productInfoDto.getId());
     }

+ 11 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseDto.java

@@ -32,9 +32,20 @@ public class PurchaseDto extends Purchase {
     private BigDecimal arrivalAmount;
 
     /**
+     * 到货币种
+     */
+    private String arrivalCurrency;
+
+    /**
      * 已付款金额
      */
     private BigDecimal paidAmount;
 
 
+    /**
+     * 已付款币种
+     */
+    private String paidCurrency;
+
+
 }

+ 5 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -359,7 +359,10 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
             //初始化到货金额与已付款金额
             record.setArrivalAmount(new BigDecimal(0));
             record.setPaidAmount(new BigDecimal(0));
-
+            //到货中没有币种选择(使用合同的币种)
+            record.setArrivalCurrency(record.getCurrency());
+            //已付款金额币种默认合同币种
+            record.setPaidCurrency(record.getCurrency());
             //赋值到货金额
             List<PurchaseDto>  arrivalList= arrivalMap.get(record.getId());
             if (ObjectUtils.isNotEmpty(arrivalList)){
@@ -370,6 +373,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
             List<PurchaseDto> paidList = paidMap.get(record.getId());
             if (ObjectUtils.isNotEmpty(paidList)){
                 record.setPaidAmount(paidList.get(0).getAmount());
+                record.setPaidCurrency(paidList.get(0).getCurrency());
             }
         }
 

+ 2 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseMapper.xml

@@ -10,10 +10,12 @@
     <select id="paymentBill" resultType="com.fjhx.purchase.entity.purchase.dto.PurchaseDto">
         SELECT
             pu.code,
+            pu.supply_id,
             bs.`name` supplyName,
             pu.amount,
             IFNULL(SUM(nd.money),0) invoiceAmount,
             pu.pay_status  payStatus,
+            pu.currency,
             pu.id
         FROM
             purchase pu

+ 38 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/commission/CommissionController.java

@@ -0,0 +1,38 @@
+package com.fjhx.sale.controller.commission;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.fjhx.sale.entity.commission.dto.CommissionSelectDto;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.sale.service.commission.CommissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 业绩提成表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@RestController
+@RequestMapping("/commission")
+public class CommissionController {
+
+    @Autowired
+    private CommissionService commissionService;
+
+    /**
+     * 业绩提成表分页
+     */
+    @PostMapping("/page")
+    public Page<CommissionVo> page(@RequestBody CommissionSelectDto dto) {
+        return commissionService.getPage(dto);
+    }
+
+
+
+}

+ 33 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/commission/CommissionRuleController.java

@@ -0,0 +1,33 @@
+package com.fjhx.sale.controller.commission;
+
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.fjhx.sale.service.commission.CommissionRuleService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ * 业绩提成规则表 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@RestController
+@RequestMapping("/commissionRule")
+public class CommissionRuleController {
+    @Autowired
+    private CommissionRuleService commissionRuleService;
+
+    /**
+     * 业绩提成表明细
+     */
+    @PostMapping("/detail")
+    public CommissionRule detail(@RequestBody BaseSelectDto dto) {
+        return commissionRuleService.detail(dto.getId());
+    }
+
+}

+ 13 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/statement/SaleStatementController.java

@@ -1,9 +1,11 @@
 package com.fjhx.sale.controller.statement;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.statement.dto.ProfitSettlementDto;
 import com.fjhx.sale.entity.statement.vo.ProfitSettlementVo;
+import com.fjhx.sale.service.commission.CommissionService;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.statement.SaleStatementService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +24,9 @@ public class SaleStatementController {
     @Autowired
     private ContractService contractService;
 
+    @Autowired
+    private CommissionService commissionService;
+
     /**
      * 利润结算表
      */
@@ -38,4 +43,12 @@ public class SaleStatementController {
         contractService.updateById(contract);
     }
 
+    /**
+     * 结算功能(添加业务提成表与业务提成规则表,修改合同表的结算状态)
+     */
+    @PostMapping("/settlement")
+    public void settlement(@RequestBody CommissionDto commissionDto){
+        commissionService.settlement(commissionDto);
+    }
+
 }

+ 22 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.sale.entity.commission.dto;
+
+import com.fjhx.sale.entity.commission.po.Commission;
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成表新增编辑入参实体
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionDto extends Commission {
+
+    /**
+     * 业绩提成规则表
+     */
+    private CommissionRule commissionRule;
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionRuleDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.commission.dto;
+
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成规则表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionRuleDto extends CommissionRule {
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionRuleSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.commission.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成规则表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionRuleSelectDto extends BaseSelectDto {
+
+}

+ 26 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/dto/CommissionSelectDto.java

@@ -0,0 +1,26 @@
+package com.fjhx.sale.entity.commission.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成表列表查询入参实体
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionSelectDto extends BaseSelectDto {
+    /**
+     * 年份
+     */
+    private String time;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+}

+ 115 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/po/Commission.java

@@ -0,0 +1,115 @@
+package com.fjhx.sale.entity.commission.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.ruoyi.common.core.domain.BasePo;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 业绩提成表
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+@TableName("commission")
+public class Commission extends BasePo {
+
+    /**
+     * 销售合同ID
+     */
+    private Long contractId;
+
+    /**
+     * 销售合同编码
+     */
+    private String contractCode;
+
+    /**
+     * 客户ID
+     */
+    private Long customerId;
+
+    /**
+     * 业务员ID
+     */
+    private Long userId;
+
+    /**
+     * 合同到账金额
+     */
+    private BigDecimal contractArrival;
+
+    /**
+     * 其他收入
+     */
+    private BigDecimal otherIncome;
+
+    /**
+     * 其他支出
+     */
+    private BigDecimal otherExpenses;
+
+    /**
+     * 收入合计
+     */
+    private BigDecimal totalIncome;
+
+    /**
+     * 支出合计
+     */
+    private BigDecimal  totalExpenses;
+
+    /**
+     * 支付货款
+     */
+    private BigDecimal payForGoods;
+
+    /**
+     * 毛利
+     */
+    private BigDecimal grossGrofit;
+
+    /**
+     * 毛利率
+     */
+    private BigDecimal grossRofitMargin;
+
+    /**
+     * 售后
+     */
+    private BigDecimal afterSalesAmount;
+
+    /**
+     * 公共
+     */
+    private BigDecimal publicAmount;
+
+    /**
+     * 总办
+     */
+    private BigDecimal haveOverallAmount;
+
+    /**
+     * 部门提成
+     */
+    private BigDecimal departmentalCommission;
+
+    /**
+     * 个人提成
+     */
+    private BigDecimal personalCommission;
+
+    /**
+     * 是否结算 1已结算 0未结算
+     */
+    private Integer settlementStatus;
+
+
+}

+ 54 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/po/CommissionRule.java

@@ -0,0 +1,54 @@
+package com.fjhx.sale.entity.commission.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 业绩提成规则表
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+@TableName("commission_rule")
+public class CommissionRule extends BasePo {
+
+    /**
+     * 业绩提成表ID
+     */
+    private Long commissionId;
+
+
+    /**
+     * 售后占比
+     */
+    private BigDecimal afterSalesRatio;
+
+    /**
+     * 公共占比
+     */
+    private BigDecimal publicRatio;
+
+    /**
+     * 总办占比
+     */
+    private BigDecimal haveOverallRatio;
+
+    /**
+     * 部门占比
+     */
+    private BigDecimal departmentalRatio;
+
+    /**
+     * 个人占比
+     */
+    private BigDecimal personalRatio;
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/vo/CommissionRuleVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.commission.vo;
+
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成规则表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionRuleVo extends CommissionRule {
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/commission/vo/CommissionVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.commission.vo;
+
+import com.fjhx.sale.entity.commission.po.Commission;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业绩提成表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-11
+ */
+@Getter
+@Setter
+public class CommissionVo extends Commission {
+
+}

+ 27 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/commission/CommissionMapper.java

@@ -0,0 +1,27 @@
+package com.fjhx.sale.mapper.commission;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.sale.entity.commission.po.Commission;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 业绩提成表 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+public interface CommissionMapper extends BaseMapper<Commission> {
+
+    /**
+     * 业绩提成表分页
+     */
+    Page<CommissionVo> getPage(@Param("page") Page<Object> page, @Param("ew")QueryWrapper<Object> queryWrapper);
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/commission/CommissionRuleMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.mapper.commission;
+
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * <p>
+ * 业绩提成规则表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-11
+ */
+public interface CommissionRuleMapper extends BaseMapper<CommissionRule> {
+
+}

+ 24 - 0
hx-sale/src/main/java/com/fjhx/sale/service/commission/CommissionRuleService.java

@@ -0,0 +1,24 @@
+package com.fjhx.sale.service.commission;
+
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 业绩提成规则表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+public interface CommissionRuleService extends BaseService<CommissionRule> {
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    CommissionRule detail(Long id);
+}

+ 30 - 0
hx-sale/src/main/java/com/fjhx/sale/service/commission/CommissionService.java

@@ -0,0 +1,30 @@
+package com.fjhx.sale.service.commission;
+
+import com.fjhx.sale.entity.commission.po.Commission;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.fjhx.sale.entity.commission.dto.CommissionSelectDto;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
+
+
+/**
+ * <p>
+ * 业绩提成表 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+public interface CommissionService extends BaseService<Commission> {
+
+    /**
+     * 业绩提成表分页
+     */
+    Page<CommissionVo> getPage(CommissionSelectDto dto);
+
+    /**
+     * 结算功能(添加业务提成表与业务提成规则表)
+     */
+    void settlement(CommissionDto commissionDto);
+}

+ 35 - 0
hx-sale/src/main/java/com/fjhx/sale/service/commission/impl/CommissionRuleServiceImpl.java

@@ -0,0 +1,35 @@
+package com.fjhx.sale.service.commission.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.fjhx.sale.mapper.commission.CommissionRuleMapper;
+import com.fjhx.sale.service.commission.CommissionRuleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 业绩提成规则表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Service
+public class CommissionRuleServiceImpl extends ServiceImpl<CommissionRuleMapper, CommissionRule> implements CommissionRuleService {
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    @Override
+    public CommissionRule detail(Long id) {
+        CommissionRule commissionRule = baseMapper.selectOne(Wrappers.<CommissionRule>lambdaQuery().eq(CommissionRule::getCommissionId, id));
+        return commissionRule;
+    }
+
+}

+ 159 - 0
hx-sale/src/main/java/com/fjhx/sale/service/commission/impl/CommissionServiceImpl.java

@@ -0,0 +1,159 @@
+package com.fjhx.sale.service.commission.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.sale.entity.commission.po.Commission;
+import com.fjhx.sale.entity.commission.po.CommissionRule;
+import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.mapper.commission.CommissionMapper;
+import com.fjhx.sale.service.commission.CommissionRuleService;
+import com.fjhx.sale.service.commission.CommissionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.sale.service.contract.ContractService;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.poi.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.commission.vo.CommissionVo;
+import com.fjhx.sale.entity.commission.dto.CommissionSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.math.BigDecimal;
+
+
+/**
+ * <p>
+ * 业绩提成表 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-05-11
+ */
+@Service
+public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commission> implements CommissionService {
+    @Autowired
+    private ContractService contractService;
+
+    @Autowired
+    private CommissionRuleService commissionRuleService;
+
+
+    @Override
+    public Page<CommissionVo> getPage(CommissionSelectDto dto) {
+        QueryWrapper<Object> query = Wrappers.query();
+        query.eq(ObjectUtil.isNotEmpty(dto.getUserId()),"c.user_id",dto.getUserId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getTime()),"DATE_FORMAT(c.create_time,'%Y-%m')",dto.getTime());
+        query.orderByDesc("c.create_time");
+        Page<CommissionVo> page = this.baseMapper.getPage(dto.getPage(), query);
+        return page;
+    }
+
+
+    /**
+     * 结算功能(添加业务提成表与业务提成规则表,修改合同表的结算状态)
+     */
+    @Override
+    public void settlement(CommissionDto commissionDto) {
+        if (ObjectUtil.isEmpty(commissionDto.getCommissionRule()) || ObjectUtil.isEmpty(commissionDto.getSettlementStatus())){
+            throw  new ServiceException("参数缺失:结算状态或业绩提成规则表不能为null");
+        }
+
+        //修改合同表的结算状态
+        Contract contract = new Contract();
+        contract.setId(commissionDto.getContractId());
+        contract.setSettlementStatus(commissionDto.getSettlementStatus());
+        contractService.updateById(contract);
+
+        //查询业绩表的信息
+        Commission commission = baseMapper.selectOne(Wrappers.<Commission>lambdaQuery()
+                .eq(Commission::getContractId, commissionDto.getContractId()));
+
+
+        //如果为未结算则删除业绩提成表与业绩提成规则表的信息
+        if (commissionDto.getSettlementStatus() == 0){
+            //如果是取消结算,业绩表肯定有值
+            baseMapper.deleteById(commission.getId());
+            commissionRuleService.remove(Wrappers.<CommissionRule>lambdaQuery()
+                    .eq(CommissionRule::getCommissionId,commission.getId())
+            );
+        }else  if (commissionDto.getSettlementStatus() == 1){
+            saveOrUpdate(commissionDto);
+        }
+
+    }
+
+    /**
+     * 新增或修改业绩提成表与业绩提成规则表的信息
+     * @param commissionDto
+     */
+    private void saveOrUpdate(CommissionDto commissionDto){
+        CommissionRule commissionRule = new CommissionRule();
+        if (ObjectUtil.isNotEmpty(commissionDto.getCommissionRule())){
+           commissionRule = commissionDto.getCommissionRule();
+        }else {
+            commissionRule.setAfterSalesRatio(new BigDecimal(4));
+            commissionRule.setDepartmentalRatio(new BigDecimal(33));
+            commissionRule.setPersonalRatio(new BigDecimal(17));
+            commissionRule.setPublicRatio(new BigDecimal(6));
+            commissionRule.setHaveOverallRatio(new BigDecimal(5));
+        }
+
+
+        //计算售后金额:到账金额 * 售后占比(保留两位小数向上取整)
+        commissionDto.setAfterSalesAmount(commissionDto.getContractArrival()
+                .multiply(commissionRule.getAfterSalesRatio())
+                .divide(new BigDecimal(100))
+                .setScale(2,BigDecimal.ROUND_HALF_UP));
+
+        //计算公共金额:到账金额 * 公共占比
+        commissionDto.setPublicAmount(commissionDto.getPublicAmount()
+                .multiply(commissionRule.getPublicRatio())
+                .divide(new BigDecimal(100))
+                .setScale(2,BigDecimal.ROUND_HALF_UP));
+
+        //计算总办金额:到账金额 * 总办占比
+        commissionDto.setHaveOverallAmount(commissionDto.getPublicAmount()
+                .multiply(commissionRule.getHaveOverallRatio())
+                .divide(new BigDecimal(100))
+                .setScale(2,BigDecimal.ROUND_HALF_UP));
+
+        //计算净收入(总收入 - 总支出 - 售后 - 公共 - 总办)
+        BigDecimal netIncome = commissionDto.getTotalIncome()
+                .subtract(commissionDto.getTotalExpenses()
+                        .subtract(commissionDto.getAfterSalesAmount())
+                        .subtract(commissionDto.getPublicAmount())
+                        .subtract(commissionDto.getHaveOverallAmount())
+                ) ;
+        //计算部门提成金额:(总收入 - 总支出 - 售后 - 公共 - 总办) * 部门占比
+        commissionDto.setDepartmentalCommission(netIncome.
+                multiply(commissionRule.getDepartmentalRatio())
+                .divide(new BigDecimal(100))
+                .setScale(2,BigDecimal.ROUND_HALF_UP));
+
+        //计算个人提成金额:(总收入 - 总支出 - 售后 - 公共 - 总办) * 个人占比
+        commissionDto.setPersonalCommission(netIncome.multiply(commissionRule
+                .getPersonalRatio()
+                .divide(new BigDecimal(100))
+                .setScale(2,BigDecimal.ROUND_HALF_UP)
+
+        ));
+        //如果ID为null则添加 否则为修改
+        if (ObjectUtil.isNotEmpty(commissionDto.getId())){
+            baseMapper.updateById(commissionDto);
+        }else {
+            baseMapper.insert(commissionDto);
+        }
+        commissionRule.setCommissionId(commissionDto.getId());
+        //添加或修改业绩规则表信息
+        commissionRuleService.saveOrUpdate(commissionRule);
+    }
+
+}

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -118,4 +119,6 @@ public interface ContractService extends BaseService<Contract> {
      * 产品销售统计(数据看板-销售分析页面开发)
      */
     List<ContractDto> productSalesStatistics(ContractDto dto);
+
+
 }

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -23,6 +23,7 @@ import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.sale.entity.commission.dto.CommissionDto;
 import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
@@ -90,6 +91,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Autowired
     private AccountManagementService accountManagementService;
 
+    @Autowired
+    private ContractService contractService;
+
     /**
      * 分页
      *
@@ -380,6 +384,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         return contractDtoList;
     }
 
+
+
     /**
      * 赋值外销合同信息
      *

+ 11 - 0
hx-sale/src/main/resources/mapper/commission/CommissionMapper.xml

@@ -0,0 +1,11 @@
+<?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.fjhx.sale.mapper.commission.CommissionMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.commission.vo.CommissionVo">
+        select
+           *
+        from commission c
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 4 - 0
hx-sale/src/main/resources/mapper/commission/CommissionRuleMapper.xml

@@ -0,0 +1,4 @@
+<?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.fjhx.sale.mapper.commission.CommissionRuleMapper">
+</mapper>