Merge branch 'master' of http://git.xdadan.loc/tanex/emis-service
This commit is contained in:
commit
f1b77c5f4d
@ -34,6 +34,7 @@ import com.xdadan.erp.common.utils.poi.ExcelUtil;
|
||||
|
||||
import com.xdadan.erp.emis.domain.EmisCommissionQuote;
|
||||
import com.xdadan.erp.emis.service.IEmisCommissionQuoteService;
|
||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||
|
||||
/**
|
||||
* 员工提成方案报价Controller
|
||||
@ -105,9 +106,12 @@ public class EmisCommissionQuoteController extends BaseController
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:add')")
|
||||
@Log(title = "员工提成方案报价", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody EmisCommissionQuote emisCommissionQuote)
|
||||
{
|
||||
return toAjax(emisCommissionQuoteService.insertEmisCommissionQuote(emisCommissionQuote));
|
||||
public AjaxResult add(@RequestBody EmisCommissionQuote emisCommissionQuote) {
|
||||
try {
|
||||
return toAjax(emisCommissionQuoteService.insertEmisCommissionQuote(emisCommissionQuote));
|
||||
} catch (EmisBizError e) {
|
||||
return AjaxResult.error(e.getMessage(), e.getErrorCode());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -116,9 +120,12 @@ public class EmisCommissionQuoteController extends BaseController
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:edit')")
|
||||
@Log(title = "员工提成方案报价", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody EmisCommissionQuote emisCommissionQuote)
|
||||
{
|
||||
return toAjax(emisCommissionQuoteService.updateEmisCommissionQuote(emisCommissionQuote));
|
||||
public AjaxResult edit(@RequestBody EmisCommissionQuote emisCommissionQuote) {
|
||||
try {
|
||||
return toAjax(emisCommissionQuoteService.updateEmisCommissionQuote(emisCommissionQuote));
|
||||
} catch (EmisBizError e) {
|
||||
return AjaxResult.error(e.getMessage(), e.getErrorCode());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,9 +133,23 @@ public class EmisCommissionQuoteController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:remove')")
|
||||
@Log(title = "员工提成方案报价", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{quoteIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] quoteIds)
|
||||
{
|
||||
@DeleteMapping("/{quoteIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] quoteIds) {
|
||||
return toAjax(emisCommissionQuoteService.deleteEmisCommissionQuoteByQuoteIds(quoteIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量修改员工提成方案报价
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:batchUpdate')")
|
||||
@Log(title = "员工提成方案报价", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/batchUpdate")
|
||||
public AjaxResult batchUpdate(@RequestBody List<EmisCommissionQuote> emisCommissionQuoteList) {
|
||||
try {
|
||||
int result = emisCommissionQuoteService.batchUpdateEmisCommissionQuote(emisCommissionQuoteList);
|
||||
return toAjax(result);
|
||||
} catch (EmisBizError e) {
|
||||
return AjaxResult.error(e.getMessage(), e.getErrorCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,4 +87,12 @@ public interface EmisCommissionQuoteMapper extends BaseMapper<EmisCommissionQuot
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisCommissionQuoteByQuoteIds(Long[] quoteIds);
|
||||
|
||||
/**
|
||||
* 检查日期交叉重复
|
||||
*
|
||||
* @param emisCommissionQuote 员工提成方案报价
|
||||
* @return 重复的报价列表
|
||||
*/
|
||||
public List<EmisCommissionQuote> checkDateOverlap(EmisCommissionQuote emisCommissionQuote);
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ package com.xdadan.erp.emis.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.xdadan.erp.emis.domain.EmisCommissionQuote;
|
||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||
|
||||
/**
|
||||
* @ClassName EmisCommissionQuoteService
|
||||
@ -50,7 +51,7 @@ public interface IEmisCommissionQuoteService
|
||||
* @param emisCommissionQuote 员工提成方案报价
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote);
|
||||
public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError;
|
||||
|
||||
/**
|
||||
* 修改员工提成方案报价
|
||||
@ -58,7 +59,7 @@ public interface IEmisCommissionQuoteService
|
||||
* @param emisCommissionQuote 员工提成方案报价
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote);
|
||||
public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError;
|
||||
|
||||
/**
|
||||
* 批量删除员工提成方案报价
|
||||
@ -75,4 +76,20 @@ public interface IEmisCommissionQuoteService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisCommissionQuoteByQuoteId(Long quoteId);
|
||||
|
||||
/**
|
||||
* 批量修改员工提成方案报价
|
||||
*
|
||||
* @param emisCommissionQuoteList 员工提成方案报价列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int batchUpdateEmisCommissionQuote(List<EmisCommissionQuote> emisCommissionQuoteList) throws EmisBizError;
|
||||
|
||||
/**
|
||||
* 检查日期交叉重复
|
||||
*
|
||||
* @param emisCommissionQuote 员工提成方案报价
|
||||
* @return 重复的报价列表
|
||||
*/
|
||||
public List<EmisCommissionQuote> checkDateOverlap(EmisCommissionQuote emisCommissionQuote);
|
||||
}
|
||||
|
||||
@ -14,14 +14,17 @@ import java.util.List;
|
||||
|
||||
import com.xdadan.erp.emis.domain.EmisCommissionExpression;
|
||||
import com.xdadan.erp.emis.mapper.EmisCommissionExpressionMapper;
|
||||
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xdadan.erp.emis.domain.EmisCommissionQuote;
|
||||
import com.xdadan.erp.emis.mapper.EmisCommissionQuoteMapper;
|
||||
import com.xdadan.erp.emis.service.IEmisCommissionQuoteService;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
/**
|
||||
* 员工提成方案报价Service业务层处理
|
||||
*
|
||||
* @author linfso
|
||||
@ -73,6 +76,25 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi
|
||||
return emisCommissionQuoteMapper.checkUnique(emisCommissionQuote);
|
||||
}
|
||||
|
||||
/**
|
||||
* 公共验重方法,检查日期交叉和完全重复
|
||||
*
|
||||
* @param emisCommissionQuote 当前报价
|
||||
* @throws EmisBizError 存在冲突时抛出
|
||||
*/
|
||||
private void checkQuoteConflict(EmisCommissionQuote emisCommissionQuote) throws EmisBizError {
|
||||
List<EmisCommissionQuote> overlapList = checkDateOverlap(emisCommissionQuote);
|
||||
if (!overlapList.isEmpty()) {
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
errorMsg.append("报价[").append(emisCommissionQuote.getQuoteName());
|
||||
for (EmisCommissionQuote overlap : overlapList) {
|
||||
errorMsg.append("\n- 与报价[").append(overlap.getQuoteName()).append("(ID:")
|
||||
.append(overlap.getQuoteId()).append(")]重复");
|
||||
}
|
||||
throw new EmisBizError(EmisBizErrorType.EXISTS, errorMsg.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增员工提成方案报价
|
||||
*
|
||||
@ -80,8 +102,8 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote)
|
||||
{
|
||||
public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError {
|
||||
checkQuoteConflict(emisCommissionQuote);
|
||||
// 插入提成方案
|
||||
emisCommissionQuoteMapper.insertEmisCommissionQuote(emisCommissionQuote);
|
||||
|
||||
@ -104,8 +126,8 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote)
|
||||
{
|
||||
public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError {
|
||||
checkQuoteConflict(emisCommissionQuote);
|
||||
return emisCommissionQuoteMapper.updateEmisCommissionQuote(emisCommissionQuote);
|
||||
}
|
||||
|
||||
@ -133,4 +155,126 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi
|
||||
return emisCommissionQuoteMapper.deleteEmisCommissionQuoteByQuoteId(quoteId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量修改员工提成方案报价
|
||||
*
|
||||
* @param emisCommissionQuoteList 员工提成方案报价列表
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int batchUpdateEmisCommissionQuote(List<EmisCommissionQuote> emisCommissionQuoteList) throws EmisBizError {
|
||||
int result = 0;
|
||||
for (EmisCommissionQuote emisCommissionQuote : emisCommissionQuoteList) {
|
||||
// 先查询数据库中的完整数据
|
||||
EmisCommissionQuote dbQuote = emisCommissionQuoteMapper
|
||||
.selectEmisCommissionQuoteByQuoteId(emisCommissionQuote.getQuoteId());
|
||||
if (dbQuote == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 补齐前端未传的字段
|
||||
if (emisCommissionQuote.getQuoteCode() == null) {
|
||||
emisCommissionQuote.setQuoteCode(dbQuote.getQuoteCode());
|
||||
}
|
||||
if (emisCommissionQuote.getQuoteName() == null) {
|
||||
emisCommissionQuote.setQuoteName(dbQuote.getQuoteName());
|
||||
}
|
||||
if (emisCommissionQuote.getTransLineCode() == null) {
|
||||
emisCommissionQuote.setTransLineCode(dbQuote.getTransLineCode());
|
||||
}
|
||||
if (emisCommissionQuote.getSendSiteCode() == null) {
|
||||
emisCommissionQuote.setSendSiteCode(dbQuote.getSendSiteCode());
|
||||
}
|
||||
if (emisCommissionQuote.getNextSiteCode() == null) {
|
||||
emisCommissionQuote.setNextSiteCode(dbQuote.getNextSiteCode());
|
||||
}
|
||||
if (emisCommissionQuote.getProdCode() == null) {
|
||||
emisCommissionQuote.setProdCode(dbQuote.getProdCode());
|
||||
}
|
||||
if (emisCommissionQuote.getFromCountry() == null) {
|
||||
emisCommissionQuote.setFromCountry(dbQuote.getFromCountry());
|
||||
}
|
||||
if (emisCommissionQuote.getCountry() == null) {
|
||||
emisCommissionQuote.setCountry(dbQuote.getCountry());
|
||||
}
|
||||
if (emisCommissionQuote.getFeeType() == null) {
|
||||
emisCommissionQuote.setFeeType(dbQuote.getFeeType());
|
||||
}
|
||||
if (emisCommissionQuote.getCalcType() == null) {
|
||||
emisCommissionQuote.setCalcType(dbQuote.getCalcType());
|
||||
}
|
||||
if (emisCommissionQuote.getPostType() == null) {
|
||||
emisCommissionQuote.setPostType(dbQuote.getPostType());
|
||||
}
|
||||
if (emisCommissionQuote.getTransType() == null) {
|
||||
emisCommissionQuote.setTransType(dbQuote.getTransType());
|
||||
}
|
||||
if (emisCommissionQuote.getBlOpen() == null) {
|
||||
emisCommissionQuote.setBlOpen(dbQuote.getBlOpen());
|
||||
}
|
||||
if (emisCommissionQuote.getTransLineCode() == null) {
|
||||
emisCommissionQuote.setTransLineCode(dbQuote.getTransLineCode());
|
||||
}
|
||||
if (emisCommissionQuote.getProdCode() == null) {
|
||||
emisCommissionQuote.setProdCode(dbQuote.getProdCode());
|
||||
}
|
||||
if (emisCommissionQuote.getBlOpen() == null) {
|
||||
emisCommissionQuote.setBlOpen(dbQuote.getBlOpen());
|
||||
}
|
||||
if (emisCommissionQuote.getEmpCode() == null) {
|
||||
emisCommissionQuote.setEmpCode(dbQuote.getEmpCode());
|
||||
}
|
||||
if (emisCommissionQuote.getEmpName() == null) {
|
||||
emisCommissionQuote.setEmpName(dbQuote.getEmpName());
|
||||
}
|
||||
if (emisCommissionQuote.getStartDate() == null) {
|
||||
emisCommissionQuote.setStartDate(dbQuote.getStartDate());
|
||||
}
|
||||
if (emisCommissionQuote.getEndDate() == null) {
|
||||
emisCommissionQuote.setEndDate(dbQuote.getEndDate());
|
||||
}
|
||||
if (emisCommissionQuote.getPriorityLevel() == null) {
|
||||
emisCommissionQuote.setPriorityLevel(dbQuote.getPriorityLevel());
|
||||
}
|
||||
checkQuoteConflict(emisCommissionQuote);
|
||||
|
||||
// 更新数据
|
||||
result += emisCommissionQuoteMapper.updateEmisCommissionQuote(emisCommissionQuote);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查日期交叉重复
|
||||
*
|
||||
* @param emisCommissionQuote 员工提成方案报价
|
||||
* @return 重复的报价列表
|
||||
*/
|
||||
@Override
|
||||
public List<EmisCommissionQuote> checkDateOverlap(EmisCommissionQuote emisCommissionQuote) {
|
||||
return emisCommissionQuoteMapper.checkDateOverlap(emisCommissionQuote);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断两个报价是否完全重复
|
||||
*
|
||||
* @param quote1 报价1
|
||||
* @param quote2 报价2
|
||||
* @return 是否完全重复
|
||||
*/
|
||||
private boolean isDuplicateQuote(EmisCommissionQuote quote1, EmisCommissionQuote quote2) {
|
||||
// 比较关键字段是否完全相同
|
||||
return StringUtils.equals(quote1.getEmpCode(), quote2.getEmpCode()) &&
|
||||
StringUtils.equals(quote1.getEmpName(), quote2.getEmpName()) &&
|
||||
StringUtils.equals(quote1.getFeeType(), quote2.getFeeType()) &&
|
||||
StringUtils.equals(quote1.getCalcType(), quote2.getCalcType()) &&
|
||||
StringUtils.equals(quote1.getPostType(), quote2.getPostType()) &&
|
||||
StringUtils.equals(quote1.getTransType(), quote2.getTransType()) &&
|
||||
StringUtils.equals(quote1.getFromCountry(), quote2.getFromCountry()) &&
|
||||
StringUtils.equals(quote1.getCountry(), quote2.getCountry()) &&
|
||||
StringUtils.equals(quote1.getTransLineCode(), quote2.getTransLineCode()) &&
|
||||
StringUtils.equals(quote1.getProdCode(), quote2.getProdCode()) &&
|
||||
quote1.getStartDate() == quote2.getStartDate() &&
|
||||
quote1.getEndDate() == quote2.getEndDate();
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,6 +65,13 @@
|
||||
<if test="transLineCode != null and transLineCode != ''"> and trans_line_code=#{transLineCode} </if>
|
||||
<if test="prodCode != null and prodCode != ''"> and FIND_IN_SET(#{prodCode},prod_code) </if>
|
||||
|
||||
<if test="startDate != null">
|
||||
and DATE(start_date) >= DATE(#{startDate})
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and DATE(end_date) <= DATE(#{endDate})
|
||||
</if>
|
||||
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
@ -79,8 +86,8 @@
|
||||
</if>
|
||||
|
||||
<if test="quoteName != null and quoteName != ''"> and quote_name like concat('%', #{quoteName}, '%')</if>
|
||||
<if test="fromCountry != null and fromCountry != ''"> and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1' or from_country is null or from_country='' or ( #{fromCountry}!='0086' and from_country='-2' ) )</if>
|
||||
<if test="country != null and country != ''"> and ( FIND_IN_SET(#{country},country) or country='-1' or country is null or country='' or ( #{country}!='0086' and country='-2' ) ) </if>
|
||||
<if test="fromCountry != null and fromCountry != ''"> and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1' or from_country is null or from_country='' or ( #{fromCountry}!='0086' and from_country='-2' ) or from_country='-3')</if>
|
||||
<if test="country != null and country != ''"> and ( FIND_IN_SET(#{country},country) or country='-1' or country is null or country='' or ( #{country}!='0086' and country='-2' ) or from_country='-3' ) </if>
|
||||
|
||||
<if test="sendSiteCode != null and sendSiteCode != ''"> and ( ( FIND_IN_SET(#{sendSiteCode},send_site_code) and send_site_code is not null ) or send_site_code is null ) </if>
|
||||
<if test="nextSiteCode != null and nextSiteCode != ''"> and ( ( FIND_IN_SET(#{nextSiteCode},next_site_code) and next_site_code is not null ) or next_site_code is null ) </if>
|
||||
@ -248,4 +255,63 @@
|
||||
#{quoteId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="checkDateOverlap" parameterType="EmisCommissionQuote" resultMap="EmisCommissionQuoteResult">
|
||||
<include refid="selectEmisCommissionQuoteVo"/>
|
||||
<where>
|
||||
del_flag='0'
|
||||
<if test="quoteId != null and quoteId != ''">
|
||||
and quote_id != #{quoteId}
|
||||
</if>
|
||||
and (
|
||||
start_date <= #{endDate} and end_date >= #{startDate}
|
||||
)
|
||||
and (
|
||||
emp_code = #{empCode}
|
||||
or FIND_IN_SET(#{empCode}, emp_code)
|
||||
or FIND_IN_SET(emp_code, #{empCode})
|
||||
or emp_code='-1'
|
||||
)
|
||||
and (
|
||||
emp_name = #{empName}
|
||||
or FIND_IN_SET(#{empName}, emp_name)
|
||||
or FIND_IN_SET(emp_name, #{empName})
|
||||
or emp_name='全部'
|
||||
)
|
||||
and fee_type=#{feeType}
|
||||
and bl_open=#{blOpen}
|
||||
and calc_type=#{calcType}
|
||||
and post_type=#{postType}
|
||||
and (
|
||||
trans_type = #{transType}
|
||||
or FIND_IN_SET(#{transType}, trans_type)
|
||||
or FIND_IN_SET(trans_type, #{transType})
|
||||
)
|
||||
and (
|
||||
from_country = #{fromCountry}
|
||||
or FIND_IN_SET(#{fromCountry}, from_country)
|
||||
or FIND_IN_SET(from_country, #{fromCountry})
|
||||
or from_country='-1'
|
||||
)
|
||||
and (
|
||||
country = #{country}
|
||||
or FIND_IN_SET(#{country}, country)
|
||||
or FIND_IN_SET(country, #{country})
|
||||
or country='-1'
|
||||
)
|
||||
and (
|
||||
trans_line_code = #{transLineCode}
|
||||
or FIND_IN_SET(#{transLineCode}, trans_line_code)
|
||||
or FIND_IN_SET(trans_line_code, #{transLineCode})
|
||||
or trans_line_code='-1'
|
||||
)
|
||||
and (
|
||||
prod_code = #{prodCode}
|
||||
or FIND_IN_SET(#{prodCode}, prod_code)
|
||||
or FIND_IN_SET(prod_code, #{prodCode})
|
||||
or prod_code='-1'
|
||||
)
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user