From 9860c10c27906c2ed543e4e8ce1878576303598c Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 14 Jul 2025 15:00:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?demand:=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20?= =?UTF-8?q?=E6=8F=90=E6=88=90=E7=AE=A1=E7=90=86=20-=20=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E6=8F=90=E6=88=90=E6=96=B9=E6=A1=88=E9=85=8D=E7=BD=AE=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E6=97=A5=E6=9C=9F=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8A=9F=E8=83=BD=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/EmisCommissionQuoteMapper.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml index 5c2c3d3df..44daa2b50 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 From f5eb5d3e9ee0a0001142901515d9f098e193a868 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 14 Jul 2025 16:05:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?demand:=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20?= =?UTF-8?q?=E6=8F=90=E6=88=90=E7=AE=A1=E7=90=86=20-=20=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E6=8F=90=E6=88=90=E6=96=B9=E6=A1=88=E9=85=8D=E7=BD=AE=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E6=97=A5=E6=9C=9F=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8A=9F=E8=83=BD=20=20=20=20=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E6=8F=90=E6=88=90=E6=96=B9=E6=A1=88=E9=85=8D=E7=BD=AE=E6=96=B0?= =?UTF-8?q?=E5=A2=9E/=E4=BF=AE=E6=94=B9/=E6=89=B9=E9=87=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=A2=9E=E5=8A=A0=E9=AA=8C=E9=87=8D=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emis/EmisCommissionQuoteController.java | 18 ++++-- .../service/IEmisCommissionQuoteService.java | 4 +- .../impl/EmisCommissionQuoteServiceImpl.java | 56 ++++++++++--------- .../mapper/EmisCommissionQuoteMapper.xml | 18 ++++++ 4 files changed, 61 insertions(+), 35 deletions(-) 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 44daa2b50..437bd442c 100644 --- a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml @@ -260,7 +260,9 @@ del_flag='0' + and quote_id != #{quoteId} + and ( (start_date #{startDate} and #{startDate} end_date) or @@ -310,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