From 0d9f023f8c70f90c8f5b1874c0c561571c67a35d Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 14 Jul 2025 11:15:49 +0800 Subject: [PATCH 1/5] =?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?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E6=8F=90=E6=88=90=E6=96=B9=E6=A1=88=EF=BC=8C=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7=E7=BB=B4=E6=8A=A4=E7=95=8C=E9=9D=A2=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E2=80=9C=E8=B5=B7=E5=A7=8B=E5=9B=BD=E3=80=81=E7=9B=AE=E7=9A=84?= =?UTF-8?q?=E5=9B=BD=E2=80=9D=E6=96=B0=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=20=E9=9D=9E=E4=B8=9C=E5=8D=97=E4=BA=9A=20=EF=BC=9A=E5=89=94?= =?UTF-8?q?=E9=99=A4=E4=B8=AD=E5=9B=BD=E3=80=81=E8=B6=8A=E5=8D=97=E3=80=81?= =?UTF-8?q?=E6=9F=AC=E5=9F=94=E5=AF=A8=E3=80=81=E7=BC=85=E7=94=B8=E3=80=81?= =?UTF-8?q?=E5=AD=9F=E5=8A=A0=E6=8B=89=E3=80=81=E8=80=81=E6=8C=9D=20?= =?UTF-8?q?=E4=BB=A5=E5=A4=96=E7=9A=84=E5=9B=BD=E5=AE=B6=E2=80=99=20commit?= =?UTF-8?q?ter:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emis/EmisCommissionQuoteController.java | 21 ++- .../mapper/EmisCommissionQuoteMapper.java | 8 ++ .../service/IEmisCommissionQuoteService.java | 17 +++ .../impl/EmisCommissionQuoteServiceImpl.java | 135 +++++++++++++++++- .../mapper/EmisCommissionQuoteMapper.xml | 62 +++++++- 5 files changed, 237 insertions(+), 6 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 f3afb75ac..237e0db65 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 @@ -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 @@ -126,9 +127,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:edit')") + @Log(title = "员工提成方案报价", businessType = BusinessType.UPDATE) + @PutMapping("/batchUpdate") + public AjaxResult batchUpdate(@RequestBody List emisCommissionQuoteList) { + try { + int result = emisCommissionQuoteService.batchUpdateEmisCommissionQuote(emisCommissionQuoteList); + return toAjax(result); + } catch (EmisBizError e) { + return AjaxResult.error(e.getMessage(), e.getErrorCode()); + } + } } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCommissionQuoteMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCommissionQuoteMapper.java index 9ef30c7ce..9665f2713 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCommissionQuoteMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCommissionQuoteMapper.java @@ -87,4 +87,12 @@ public interface EmisCommissionQuoteMapper extends BaseMapper checkDateOverlap(EmisCommissionQuote emisCommissionQuote); } 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 705df1456..252950967 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 @@ -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 @@ -75,4 +76,20 @@ public interface IEmisCommissionQuoteService * @return 结果 */ public int deleteEmisCommissionQuoteByQuoteId(Long quoteId); + + /** + * 批量修改员工提成方案报价 + * + * @param emisCommissionQuoteList 员工提成方案报价列表 + * @return 结果 + */ + public int batchUpdateEmisCommissionQuote(List emisCommissionQuoteList) throws EmisBizError; + + /** + * 检查日期交叉重复 + * + * @param emisCommissionQuote 员工提成方案报价 + * @return 重复的报价列表 + */ + public List checkDateOverlap(EmisCommissionQuote emisCommissionQuote); } 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 61419746f..079628e65 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 @@ -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 @@ -133,4 +136,134 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi return emisCommissionQuoteMapper.deleteEmisCommissionQuoteByQuoteId(quoteId); } + /** + * 批量修改员工提成方案报价 + * + * @param emisCommissionQuoteList 员工提成方案报价列表 + * @return 结果 + */ + @Override + public int batchUpdateEmisCommissionQuote(List 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.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()); + } + + // 检查日期交叉重复 + 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()); + } + + // 更新数据 + result += emisCommissionQuoteMapper.updateEmisCommissionQuote(emisCommissionQuote); + } + return result; + } + + /** + * 检查日期交叉重复 + * + * @param emisCommissionQuote 员工提成方案报价 + * @return 重复的报价列表 + */ + @Override + public List 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())&& + 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 d7fa9b110..5c2c3d3df 100644 --- a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml @@ -79,8 +79,8 @@ and quote_name like concat('%', #{quoteName}, '%') - 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' ) ) - and ( FIND_IN_SET(#{country},country) or country='-1' or country is null or country='' or ( #{country}!='0086' and country='-2' ) ) + 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') + 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' ) and ( ( FIND_IN_SET(#{sendSiteCode},send_site_code) and send_site_code is not null ) or send_site_code is null ) and ( ( FIND_IN_SET(#{nextSiteCode},next_site_code) and next_site_code is not null ) or next_site_code is null ) @@ -248,4 +248,62 @@ #{quoteId} + + \ No newline at end of file From 50231d1a284eff9b24d7b4b4dc0bb8a39e9cc872 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 14 Jul 2025 14:35:25 +0800 Subject: [PATCH 2/5] =?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?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E6=8F=90=E6=88=90=E6=96=B9=E6=A1=88=EF=BC=8C=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7=E7=BB=B4=E6=8A=A4=E7=95=8C=E9=9D=A2=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E2=80=9C=E8=B5=B7=E5=A7=8B=E5=9B=BD=E3=80=81=E7=9B=AE=E7=9A=84?= =?UTF-8?q?=E5=9B=BD=E2=80=9D=E6=96=B0=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=20=E9=9D=9E=E4=B8=9C=E5=8D=97=E4=BA=9A=20=EF=BC=9A=E5=89=94?= =?UTF-8?q?=E9=99=A4=E4=B8=AD=E5=9B=BD=E3=80=81=E8=B6=8A=E5=8D=97=E3=80=81?= =?UTF-8?q?=E6=9F=AC=E5=9F=94=E5=AF=A8=E3=80=81=E7=BC=85=E7=94=B8=E3=80=81?= =?UTF-8?q?=E5=AD=9F=E5=8A=A0=E6=8B=89=E3=80=81=E8=80=81=E6=8C=9D=20?= =?UTF-8?q?=E4=BB=A5=E5=A4=96=E7=9A=84=E5=9B=BD=E5=AE=B6=E2=80=99=20commit?= =?UTF-8?q?ter:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xdadan/erp/web/emis/EmisCommissionQuoteController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 237e0db65..81838a837 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 @@ -135,7 +135,7 @@ public class EmisCommissionQuoteController extends BaseController /** * 批量修改员工提成方案报价 */ - @PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:edit')") + @PreAuthorize("@ss.hasPermi('emis:emisCommissionQuote:batchUpdate')") @Log(title = "员工提成方案报价", businessType = BusinessType.UPDATE) @PutMapping("/batchUpdate") public AjaxResult batchUpdate(@RequestBody List emisCommissionQuoteList) { 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 3/5] =?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 4/5] =?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 From a011fcc767623abb1751d07edb602dd448a05517 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 14 Jul 2025 17:14:53 +0800 Subject: [PATCH 5/5] =?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 --- .../impl/EmisCommissionQuoteServiceImpl.java | 9 ++ .../mapper/EmisCommissionQuoteMapper.xml | 111 ++++++++---------- 2 files changed, 56 insertions(+), 64 deletions(-) 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 2b11a126a..83287df83 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 @@ -212,6 +212,15 @@ public class EmisCommissionQuoteServiceImpl implements IEmisCommissionQuoteServi 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()); } diff --git a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml index 437bd442c..23935e561 100644 --- a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml @@ -261,73 +261,56 @@ del_flag='0' - and quote_id != #{quoteId} + and quote_id != #{quoteId} and ( - (start_date #{startDate} and #{startDate} end_date) - or - (start_date #{endDate} and #{endDate} end_date) - or - (start_date = ]]> #{startDate} and end_date #{endDate}) + 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' ) - - 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 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' - ) - order by create_time desc