diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionQuoteController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionQuoteController.java index 81838a837..fdceb4a1a 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionQuoteController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionQuoteController.java @@ -106,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()); + } } /** @@ -117,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()); + } } /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionQuoteService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionQuoteService.java index 252950967..be0faf66f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionQuoteService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionQuoteService.java @@ -51,7 +51,7 @@ public interface IEmisCommissionQuoteService * @param emisCommissionQuote 员工提成方案报价 * @return 结果 */ - public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote); + public int insertEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError; /** * 修改员工提成方案报价 @@ -59,7 +59,7 @@ public interface IEmisCommissionQuoteService * @param emisCommissionQuote 员工提成方案报价 * @return 结果 */ - public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote); + public int updateEmisCommissionQuote(EmisCommissionQuote emisCommissionQuote) throws EmisBizError; /** * 批量删除员工提成方案报价 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionQuoteServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionQuoteServiceImpl.java index 079628e65..2b11a126a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionQuoteServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionQuoteServiceImpl.java @@ -76,6 +76,25 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi return emisCommissionQuoteMapper.checkUnique(emisCommissionQuote); } + /** + * 公共验重方法,检查日期交叉和完全重复 + * + * @param emisCommissionQuote 当前报价 + * @throws EmisBizError 存在冲突时抛出 + */ + private void checkQuoteConflict(EmisCommissionQuote emisCommissionQuote) throws EmisBizError { + List 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()); + } + } + /** * 新增员工提成方案报价 * @@ -83,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); @@ -107,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); } @@ -208,26 +227,7 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi if (emisCommissionQuote.getPriorityLevel() == null) { emisCommissionQuote.setPriorityLevel(dbQuote.getPriorityLevel()); } - - // 检查日期交叉重复 - List overlapList = checkDateOverlap(emisCommissionQuote); - if (!overlapList.isEmpty()) { - StringBuilder errorMsg = new StringBuilder(); - errorMsg.append("报价[").append(emisCommissionQuote.getQuoteName()).append("]存在冲突:"); - - for (EmisCommissionQuote overlap : overlapList) { - // 判断是否为完全重复 - boolean isDuplicate = isDuplicateQuote(emisCommissionQuote, overlap); - if (isDuplicate) { - errorMsg.append("\n- 与报价[").append(overlap.getQuoteName()).append("(ID:") - .append(overlap.getQuoteId()).append(")]重复"); - } else { - errorMsg.append("\n- 与报价[").append(overlap.getQuoteName()).append("(ID:") - .append(overlap.getQuoteId()).append(")]日期交叉"); - } - } - throw new EmisBizError(EmisBizErrorType.EXISTS, errorMsg.toString()); - } + checkQuoteConflict(emisCommissionQuote); // 更新数据 result += emisCommissionQuoteMapper.updateEmisCommissionQuote(emisCommissionQuote); @@ -262,8 +262,10 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi StringUtils.equals(quote1.getPostType(), quote2.getPostType()) && StringUtils.equals(quote1.getTransType(), quote2.getTransType()) && StringUtils.equals(quote1.getFromCountry(), quote2.getFromCountry()) && - StringUtils.equals(quote1.getCountry(), quote2.getCountry())&& - quote1.getStartDate()==quote2.getStartDate()&& - quote1.getEndDate()==quote2.getEndDate(); + 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(); } } diff --git a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml index 5c2c3d3df..437bd442c 100644 --- a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml @@ -65,6 +65,13 @@ and trans_line_code=#{transLineCode} and FIND_IN_SET(#{prodCode},prod_code) + + and DATE(start_date) >= DATE(#{startDate}) + + + and DATE(end_date) <= DATE(#{endDate}) + + order by create_time desc @@ -253,7 +260,9 @@ del_flag='0' + and quote_id != #{quoteId} + and ( (start_date #{startDate} and #{startDate} end_date) or @@ -303,6 +312,22 @@ 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' + ) + order by create_time desc