diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSalesCommissionRatioController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSalesCommissionRatioController.java new file mode 100644 index 000000000..4ae9ae37f --- /dev/null +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSalesCommissionRatioController.java @@ -0,0 +1,95 @@ +package com.xdadan.erp.web.emis; + +import com.xdadan.erp.common.annotation.Log; +import com.xdadan.erp.common.core.controller.BaseController; +import com.xdadan.erp.common.core.domain.AjaxResult; +import com.xdadan.erp.common.core.page.TableDataInfo; +import com.xdadan.erp.common.enums.BusinessType; +import com.xdadan.erp.common.utils.poi.ExcelUtil; +import com.xdadan.erp.emis.domain.EmisSalesCommissionRatio; +import com.xdadan.erp.emis.service.IEmisSalesCommissionRatioService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * 销售计提比例配置Controller + * 提供增删改查和导出等接口 + */ +@RestController +@RequestMapping("/emis/salesCommissionRatio") +public class EmisSalesCommissionRatioController extends BaseController { + @Autowired + private IEmisSalesCommissionRatioService emisSalesCommissionRatioService; + + /** + * 查询销售计提比例配置列表 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:list')") + @GetMapping("/list") + public TableDataInfo list(EmisSalesCommissionRatio query) { + startPage(); + List list = emisSalesCommissionRatioService.selectEmisSalesCommissionRatioList(query); + return getDataTable(list); + } + + /** + * 根据ID获取配置 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@PathVariable Long id) { + return AjaxResult.success(emisSalesCommissionRatioService.selectEmisSalesCommissionRatioById(id)); + } + + /** + * 新增配置 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:add')") + @Log(title = "销售计提比例配置", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody EmisSalesCommissionRatio entity) { + try { + return toAjax(emisSalesCommissionRatioService.insertEmisSalesCommissionRatio(entity)); + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 修改配置 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:edit')") + @Log(title = "销售计提比例配置", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody EmisSalesCommissionRatio entity) { + try { + return toAjax(emisSalesCommissionRatioService.updateEmisSalesCommissionRatio(entity)); + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 批量删除配置 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:remove')") + @Log(title = "销售计提比例配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(emisSalesCommissionRatioService.deleteEmisSalesCommissionRatioByIds(ids)); + } + + /** + * 导出配置 + */ + @PreAuthorize("@ss.hasPermi('emis:salesCommissionRatio:export')") + @Log(title = "销售计提比例配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(javax.servlet.http.HttpServletResponse response, EmisSalesCommissionRatio query) { + List list = emisSalesCommissionRatioService.selectEmisSalesCommissionRatioList(query); + ExcelUtil util = new ExcelUtil<>(EmisSalesCommissionRatio.class); + util.exportExcel(response, list, "销售计提比例配置数据"); + } +} \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSalesCommissionRatio.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSalesCommissionRatio.java new file mode 100644 index 000000000..4f0807ff9 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisSalesCommissionRatio.java @@ -0,0 +1,29 @@ +package com.xdadan.erp.emis.domain; + +import lombok.Data; +import com.xdadan.erp.common.core.domain.BaseEntity; +import java.math.BigDecimal; + +/** + * 销售计提比例配置实体类 + * 对应表:emis_sales_commission_ratio + */ +@Data +public class EmisSalesCommissionRatio extends BaseEntity { + /** 主键ID */ + private Long id; + /** 销售主管 */ + private String salesExecutive; + /** 销售主管占比 */ + private BigDecimal salesExecutiveRatio; + /** 销售联系人 */ + private String salesmen; + /** 销售联系人占比 */ + private BigDecimal salesmenRatio; + /** 销售支持 */ + private String salesSupport; + /** 销售支持占比 */ + private BigDecimal salesSupportRatio; + /** 启用状态 1-启用 0-未启用 **/ + private String status; +} diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSalesCommissionRatioMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSalesCommissionRatioMapper.java new file mode 100644 index 000000000..319705e05 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSalesCommissionRatioMapper.java @@ -0,0 +1,83 @@ +/** + * @Project: emis + * @Title: EmisSalesCommissionRatioMapper.java + * @author + * @date + * @Copyright: ShangHai Doitinfo 2022 All rights reserved. + * @version v1.0 + * @Description:

销售计提比例配置 Mapper 接口

+ * Warning : This file is generate by ai tools,don't edit!!! + */ +package com.xdadan.erp.emis.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xdadan.erp.emis.domain.EmisSalesCommissionRatio; + +/** + * @ClassName EmisSalesCommissionRatioMapper + * @Description + *

+ * 销售计提比例配置 Mapper 接口 + *

+ * @author + * @date + */ +public interface EmisSalesCommissionRatioMapper extends BaseMapper { + /** + * 主键查询 + * + * @param id + * @return + */ + EmisSalesCommissionRatio selectEmisSalesCommissionRatioById(Long id); + + /** + * 查询列表 + * + * @param emisSalesCommissionRatio + * @return 集合 + */ + List selectEmisSalesCommissionRatioList( + EmisSalesCommissionRatio emisSalesCommissionRatio); + + /** + * 新增 + * + * @param emisSalesCommissionRatio + * @return + */ + int insertEmisSalesCommissionRatio(EmisSalesCommissionRatio emisSalesCommissionRatio); + + /** + * 修改 + * + * @param emisSalesCommissionRatio + * @return + */ + int updateEmisSalesCommissionRatio(EmisSalesCommissionRatio emisSalesCommissionRatio); + + /** + * 删除 + * + * @param id 主键 + * @return 结果 + */ + int deleteEmisSalesCommissionRatioById(Long id); + + /** + * 批量删除 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteEmisSalesCommissionRatioByIds(Long[] ids); + + /** + * 验重:salesExecutive、salesmen、salesSupport、status都相同视为重复 + * + * @param emisSalesCommissionRatio + * @return 重复数量 + */ + int checkUnique(EmisSalesCommissionRatio emisSalesCommissionRatio); +} \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSalesCommissionRatioService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSalesCommissionRatioService.java new file mode 100644 index 000000000..1c01aa392 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSalesCommissionRatioService.java @@ -0,0 +1,46 @@ +package com.xdadan.erp.emis.service; + +import com.xdadan.erp.emis.domain.EmisSalesCommissionRatio; +import com.xdadan.erp.emis.domain.exception.EmisBizError; + +import java.util.List; + +/** + * 销售计提比例配置Service接口 + */ +public interface IEmisSalesCommissionRatioService { + /** + * 主键查询 + */ + EmisSalesCommissionRatio selectEmisSalesCommissionRatioById(Long id); + + /** + * 查询销售计提比例配置列表 + */ + List selectEmisSalesCommissionRatioList(EmisSalesCommissionRatio query); + + /** + * 新增销售计提比例配置 + */ + int insertEmisSalesCommissionRatio(EmisSalesCommissionRatio entity) throws EmisBizError; + + /** + * 修改销售计提比例配置 + */ + int updateEmisSalesCommissionRatio(EmisSalesCommissionRatio entity) throws EmisBizError; + + /** + * 批量删除销售计提比例配置 + */ + int deleteEmisSalesCommissionRatioByIds(Long[] ids); + + /** + * 删除单个销售计提比例配置 + */ + int deleteEmisSalesCommissionRatioById(Long id); + + /** + * 校验比例和是否有效(<=100%) + */ + boolean checkRatioValid(EmisSalesCommissionRatio entity); +} \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSalesCommissionRatioServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSalesCommissionRatioServiceImpl.java new file mode 100644 index 000000000..c25674d86 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSalesCommissionRatioServiceImpl.java @@ -0,0 +1,117 @@ +package com.xdadan.erp.emis.service.impl; + +import com.xdadan.erp.emis.domain.EmisSalesCommissionRatio; +import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.mapper.EmisSalesCommissionRatioMapper; +import com.xdadan.erp.emis.service.IEmisSalesCommissionRatioService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.List; + +/** + * 销售计提比例配置Service实现类 + * 负责销售计提比例配置的增删改查等业务逻辑处理 + * + * @author heyu + */ +@Service +public class EmisSalesCommissionRatioServiceImpl implements IEmisSalesCommissionRatioService { + @Autowired + private EmisSalesCommissionRatioMapper emisSalesCommissionRatioMapper; + + /** + * 根据主键ID查询销售计提比例配置 + * + * @param id 主键ID + * @return 配置实体 + */ + @Override + public EmisSalesCommissionRatio selectEmisSalesCommissionRatioById(Long id) { + return emisSalesCommissionRatioMapper.selectById(id); + } + + /** + * 查询销售计提比例配置列表 + * + * @param query 查询条件 + * @return 配置列表 + */ + @Override + public List selectEmisSalesCommissionRatioList(EmisSalesCommissionRatio query) { + return emisSalesCommissionRatioMapper.selectEmisSalesCommissionRatioList(query); + } + + /** + * 新增销售计提比例配置 + * + * @param entity 配置实体 + * @return 影响行数 + * @throws IllegalArgumentException 占比校验不通过时抛出 + */ + @Override + public int insertEmisSalesCommissionRatio(EmisSalesCommissionRatio entity) throws EmisBizError { + if (emisSalesCommissionRatioMapper.checkUnique(entity) > 0) { + throw new EmisBizError(EmisBizErrorType.EXISTS, "已存在相同的销售计提比例配置"); + } + if (!checkRatioValid(entity)) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "占比总和必须小于等于100%"); + } + return emisSalesCommissionRatioMapper.insertEmisSalesCommissionRatio(entity); + } + + /** + * 修改销售计提比例配置 + * + * @param entity 配置实体 + * @return 影响行数 + * @throws IllegalArgumentException 占比校验不通过时抛出 + */ + @Override + public int updateEmisSalesCommissionRatio(EmisSalesCommissionRatio entity) throws EmisBizError { + if (emisSalesCommissionRatioMapper.checkUnique(entity) > 0) { + throw new EmisBizError(EmisBizErrorType.EXISTS, "已存在相同的销售计提比例配置"); + } + if (!checkRatioValid(entity)) { + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "占比总和必须小于等于100%"); + } + return emisSalesCommissionRatioMapper.updateEmisSalesCommissionRatio(entity); + } + + /** + * 批量删除销售计提比例配置 + * + * @param ids 主键ID数组 + * @return 影响行数 + */ + @Override + public int deleteEmisSalesCommissionRatioByIds(Long[] ids) { + return emisSalesCommissionRatioMapper.deleteEmisSalesCommissionRatioByIds(ids); + } + + /** + * 删除单个销售计提比例配置 + * + * @param id 主键ID + * @return 影响行数 + */ + @Override + public int deleteEmisSalesCommissionRatioById(Long id) { + return emisSalesCommissionRatioMapper.deleteEmisSalesCommissionRatioById(id); + } + + /** + * 校验销售计提比例总和是否有效(<=100%) + * + * @param entity 配置实体 + * @return true-有效,false-无效 + */ + @Override + public boolean checkRatioValid(EmisSalesCommissionRatio entity) { + java.math.BigDecimal sum = entity.getSalesExecutiveRatio() + .add(entity.getSalesmenRatio()) + .add(entity.getSalesSupportRatio()); + return sum.compareTo(new java.math.BigDecimal("100.00")) <= 0; + } +} \ No newline at end of file diff --git a/emis-biz/src/main/resources/mapper/emis/EmisSalesCommissionRatioMapper.xml b/emis-biz/src/main/resources/mapper/emis/EmisSalesCommissionRatioMapper.xml new file mode 100644 index 000000000..98a9a2a94 --- /dev/null +++ b/emis-biz/src/main/resources/mapper/emis/EmisSalesCommissionRatioMapper.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + select id, sales_executive, sales_executive_ratio, salesmen, salesmen_ratio, sales_support, sales_support_ratio, status, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_sales_commission_ratio + + + + + + + + + + + insert into emis_sales_commission_ratio + + sales_executive, + sales_executive_ratio, + salesmen, + salesmen_ratio, + sales_support, + sales_support_ratio, + status, + remark, + del_flag, + create_by, + create_time, + update_by, + update_time, + create_site, + update_site, + + + #{salesExecutive}, + #{salesExecutiveRatio}, + #{salesmen}, + #{salesmenRatio}, + #{salesSupport}, + #{salesSupportRatio}, + #{status}, + #{remark}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{createSite}, + #{updateSite}, + + + + + + UPDATE emis_sales_commission_ratio + + sales_executive = #{salesExecutive}, + sales_executive_ratio = #{salesExecutiveRatio}, + salesmen = #{salesmen}, + salesmen_ratio = #{salesmenRatio}, + sales_support = #{salesSupport}, + sales_support_ratio = #{salesSupportRatio}, + status = #{status}, + remark = #{remark}, + del_flag = #{delFlag}, + update_by = #{updateBy}, + update_time = NOW(), + update_site = #{updateSite}, + + WHERE id = #{id} + + + + + UPDATE emis_sales_commission_ratio + SET del_flag = '1', update_time = NOW() + WHERE id = #{id} + + + + + UPDATE emis_sales_commission_ratio + SET del_flag = '1', update_time = NOW() + WHERE id IN + + #{id} + + + + + + + \ No newline at end of file