diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCreditSalesmenController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCreditSalesmenController.java
index 5d525646b..5e7cd8cf2 100644
--- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCreditSalesmenController.java
+++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCreditSalesmenController.java
@@ -1,11 +1,11 @@
-/**
+/**
* @Project: emis
* @Title: EmisCreditSalesmenController.java
* @author linfso
* @date 2025-03-08 16:17:56
* @Copyright: ShangHai Duta 2022 All rights reserved.
- * @version v1.0
+ * @version v1.0
* @Description:
销售信用额度 控制器
*/
@@ -14,6 +14,7 @@ package com.xdadan.erp.web.emis;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import com.xdadan.erp.emis.domain.EmisWaybill;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -36,10 +37,11 @@ import com.xdadan.erp.common.utils.poi.ExcelUtil;
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
import com.xdadan.erp.emis.service.IEmisCreditSalesmenService;
+import com.xdadan.erp.emis.domain.EmisSettleBill;
/**
* 销售信用额度Controller
- *
+ *
* @author linfso
* @date 2025-03-08 16:17:56
*/
@@ -62,11 +64,21 @@ public class EmisCreditSalesmenController extends BaseController
return getDataTable(list);
}
+ /**
+ * 查询销售理赔账单列表
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisCreditSalesmen:getSalesSatisfyDetail')")
+ @GetMapping("/getSalesSatisfyDetail")
+ public TableDataInfo getSalesSatisfyDetail(EmisWaybill emisWaybill) {
+ startPage();
+ List list = emisCreditSalesmenService.selectSalesSatisfyDetailList(emisWaybill);
+ return getDataTable(list);
+ }
/**
* 检查是否重复
- *
- * @param emisCreditSalesmen
+ *
+ * @param emisCreditSalesmen
* @return 数量
*/
@PreAuthorize("@ss.hasPermi('emis:emisCreditSalesmen:list')")
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java
index 8c9331b91..92d0eb2c3 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisCreditSalesmen.java
@@ -1,10 +1,10 @@
-/**
+/**
* @Project: emis
* @Title: EmisCreditSalesmen.java
* @author linfso
* @date 2025-03-08 16:17:56
* @Copyright: ShangHai Duta 2022 All rights reserved.
- * @version v1.0
+ * @version v1.0
* @Description: 销售信用额度 实体类
*/
@@ -49,6 +49,8 @@ public class EmisCreditSalesmen extends BaseEntity
private BigDecimal overTermMoney;
/* 账期内额度 */
private BigDecimal inTermMoney;
+ /* 理赔金额 */
+ private BigDecimal satisfyMoney;
/* 币种 */
private String currency;
/* 运输方式 */
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCreditSalesmenMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCreditSalesmenMapper.java
index 2d75ff18d..d2a4c7bbc 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCreditSalesmenMapper.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisCreditSalesmenMapper.java
@@ -1,10 +1,10 @@
-/**
+/**
* @Project: emis
* @Title: EmisCreditSalesmenMapper.java
* @author linfso
* @date 2025-03-08 16:17:56
* @Copyright: ShangHai Doitinfo 2022 All rights reserved.
- * @version v1.0
+ * @version v1.0
* @Description: 销售信用额度 Mapper 接口
* Warning : This file is generate by ai tools,don't edit!!!
*/
@@ -17,6 +17,8 @@ import java.util.Map;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
import org.apache.ibatis.annotations.Param;
+import com.xdadan.erp.emis.domain.EmisSettleBill;
+import com.xdadan.erp.emis.domain.EmisWaybill;
/**
* @ClassName EmisCreditSalesmenMapper
@@ -29,14 +31,14 @@ public interface EmisCreditSalesmenMapper extends BaseMapper
/**
* 主键查询
* @param id
- * @return
+ * @return
*/
public EmisCreditSalesmen selectEmisCreditSalesmenById(Long id);
/**
* 查询列表
- *
- * @param emisCreditSalesmen
+ *
+ * @param emisCreditSalesmen
* @return 集合
*/
public List selectEmisCreditSalesmenList(EmisCreditSalesmen emisCreditSalesmen);
@@ -50,26 +52,26 @@ public interface EmisCreditSalesmenMapper extends BaseMapper
/**
* 检查是否重复
- *
- * @param emisCreditSalesmen
+ *
+ * @param emisCreditSalesmen
* @return 数量
*/
public List checkUnique(EmisCreditSalesmen emisCreditSalesmen);
-
+
/**
- * 新增
- *
+ * 新增
+ *
* @param emisCreditSalesmen
- * @return
+ * @return
*/
public int insertEmisCreditSalesmen(EmisCreditSalesmen emisCreditSalesmen);
/**
* 修改
- *
- * @param emisCreditSalesmen
- * @return
+ *
+ * @param emisCreditSalesmen
+ * @return
*/
public int updateEmisCreditSalesmen(EmisCreditSalesmen emisCreditSalesmen);
@@ -85,7 +87,7 @@ public interface EmisCreditSalesmenMapper extends BaseMapper
/**
* 删除
- *
+ *
* @param id 主键
* @return 结果
*/
@@ -93,9 +95,17 @@ public interface EmisCreditSalesmenMapper extends BaseMapper
/**
* 批量删除
- *
+ *
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteEmisCreditSalesmenByIds(Long[] ids);
+
+ /**
+ * 查询销售理赔详情列表
+ *
+ * @param emisWaybill 运单查询条件
+ * @return 结算账单集合
+ */
+ public List selectSalesSatisfyDetailList(EmisWaybill emisWaybill);
}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java
index d7b099901..3bab4d5ee 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java
@@ -54,6 +54,7 @@ package com.xdadan.erp.emis.service;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -418,7 +419,8 @@ public class EmisBaseService {
}
}
- BigDecimal totalCreditMoney = baseCreditMoney.add(tempAdjust);
+ BigDecimal satisfyMoney = creditSalesmen.getSatisfyMoney() != null ? creditSalesmen.getSatisfyMoney() : BigDecimal.ZERO;
+ BigDecimal totalCreditMoney = baseCreditMoney.add(tempAdjust).add(satisfyMoney);
log.debug("客户[{}]的临时额度总额计算完成: 基础额度[{}] + 临时调整[{}] = 总额[{}]",
creditSalesmen.getAccCode(), baseCreditMoney, tempAdjust, totalCreditMoney);
return totalCreditMoney;
@@ -1662,11 +1664,15 @@ public class EmisBaseService {
BigDecimal inTermMoney = getInTermMoney(emisWaybillList);
// 超期金额
BigDecimal overTermMoney = new BigDecimal(useMoney.subtract(inTermMoney).stripTrailingZeros().toPlainString());
+ // 计算理赔金额
+ BigDecimal satisfyMoney = calculateSatisfyMoney(emisWaybillList);
+
EmisCreditSalesmen emisCreditSalesmen = new EmisCreditSalesmen();
emisCreditSalesmen.setId(item.getId());
emisCreditSalesmen.setUseMoney(useMoney);
emisCreditSalesmen.setOverTermMoney(overTermMoney);
emisCreditSalesmen.setInTermMoney(inTermMoney);
+ emisCreditSalesmen.setSatisfyMoney(satisfyMoney);
emisCreditSalesmenMapper.updateEmisCreditSalesmen(emisCreditSalesmen);
log.info("success.autoDoCredit , emisCreditSalesmen,{}", JSON.toJSONString(emisCreditSalesmen));
}catch (Exception ex){
@@ -1715,6 +1721,61 @@ public class EmisBaseService {
return inTermMoney;
}
+ /**
+ * 根据运单列表计算理赔金额
+ * 根据emisWaybillList.billCode查emis_settle_sub_bill获取settle_bill_no
+ * 关联emis_settle_bill获取总的satisfy_money并返回
+ * 一个settle_bill_no对应多个billCode
+ *
+ * @param emisWaybillList 运单列表
+ * @return 理赔金额总额
+ */
+ protected BigDecimal calculateSatisfyMoney(List emisWaybillList) {
+ if (CollectionUtil.isEmpty(emisWaybillList)) {
+ return BigDecimal.ZERO;
+ }
+
+ // 获取所有运单号
+ List billCodeList = emisWaybillList.stream()
+ .map(EmisWaybill::getBillCode)
+ .collect(Collectors.toList());
+
+ log.info("开始计算理赔金额,运单号列表: {}", billCodeList);
+
+ // 根据billCode查询emis_settle_sub_bill获取settle_bill_no
+ List emisSettleSubBillList = emisSettleSubBillMapper.querysSettleSubBillByBillCodeList(billCodeList);
+ if (CollectionUtil.isEmpty(emisSettleSubBillList)) {
+ log.info("未找到对应的结算子账单记录");
+ return BigDecimal.ZERO;
+ }
+
+ // 获取所有settle_bill_no
+ Set settleBillNoSet = emisSettleSubBillList.stream()
+ .map(EmisSettleSubBill::getSettleBillNo)
+ .filter(StringUtils::isNotEmpty)
+ .collect(Collectors.toSet());
+
+ if (CollectionUtil.isEmpty(settleBillNoSet)) {
+ log.info("未找到对应的结算账单号");
+ return BigDecimal.ZERO;
+ }
+
+ log.info("找到的结算账单号: {}", settleBillNoSet);
+
+ // 根据settle_bill_no查询emis_settle_bill获取satisfy_money
+ BigDecimal totalSatisfyMoney = BigDecimal.ZERO;
+ for (String settleBillNo : settleBillNoSet) {
+ EmisSettleBill settleBill = emisSettleBillMapper.selectSettleBillBySettleBillNo(settleBillNo);
+ if (settleBill != null && settleBill.getSatisfyMoney() != null) {
+ totalSatisfyMoney = totalSatisfyMoney.add(settleBill.getSatisfyMoney());
+ log.debug("结算账单[{}]的理赔金额: {}", settleBillNo, settleBill.getSatisfyMoney());
+ }
+ }
+
+ log.info("理赔金额计算完成,总额: {}", totalSatisfyMoney);
+ return totalSatisfyMoney;
+ }
+
public List filterOverTermEmisWaybillList(List list) {
log.info("cd filterOverTermEmisWaybillList , emisWaybillList,{}", list);
if (CollectionUtil.isEmpty(list)) {
@@ -4723,6 +4784,7 @@ public class EmisBaseService {
EmisWaybillBatchStatus batchStatus = new EmisWaybillBatchStatus();
batchStatus.setBillCode(waybill.getBillCode());
batchStatus.setSiteBatchStatus("1"); // 1表示匹配成功
+// batchStatus.setBlManual("1");
Date now = new Date();
batchStatus.setCreateBy("system");
batchStatus.setCreateTime(now);
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCreditSalesmenService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCreditSalesmenService.java
index 18de211bd..15d0c2600 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCreditSalesmenService.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCreditSalesmenService.java
@@ -1,10 +1,10 @@
- /**
+ /**
* @Project: emis
* @Title: EmisCreditSalesmenService.java
* @author linfso
* @date 2025-03-08 16:17:56
* @Copyright: ShangHai Duta 2022 All rights reserved.
- * @version v1.0
+ * @version v1.0
* @Description: 销售信用额度 服务类接口
*/
package com.xdadan.erp.emis.service;
@@ -12,6 +12,8 @@ package com.xdadan.erp.emis.service;
import java.util.List;
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
+import com.xdadan.erp.emis.domain.EmisSettleBill;
+import com.xdadan.erp.emis.domain.EmisWaybill;
/**
* @ClassName EmisCreditSalesmenService
@@ -19,18 +21,18 @@ import com.xdadan.erp.emis.domain.exception.EmisBizError;
* @author linfso
* @date 2025-03-08 16:17:56
*/
-public interface IEmisCreditSalesmenService
+public interface IEmisCreditSalesmenService
{
/**
* 主键查询
* @param id
- * @return
+ * @return
*/
public EmisCreditSalesmen selectEmisCreditSalesmenById(Long id);
/**
* 查询销售信用额度列表
- *
+ *
* @param emisCreditSalesmen 销售信用额度
* @return 销售信用额度集合
*/
@@ -39,15 +41,15 @@ public interface IEmisCreditSalesmenService
/**
* 检查是否重复
- *
- * @param emisCreditSalesmen
+ *
+ * @param emisCreditSalesmen
* @return 数量
*/
public List checkUnique(EmisCreditSalesmen emisCreditSalesmen);
/**
* 新增销售信用额度
- *
+ *
* @param emisCreditSalesmen 销售信用额度
* @return 结果
*/
@@ -55,7 +57,7 @@ public interface IEmisCreditSalesmenService
/**
* 修改销售信用额度
- *
+ *
* @param emisCreditSalesmen 销售信用额度
* @return 结果
*/
@@ -63,7 +65,7 @@ public interface IEmisCreditSalesmenService
/**
* 批量删除销售信用额度
- *
+ *
* @param ids 需要删除的销售信用额度主键集合
* @return 结果
*/
@@ -71,9 +73,17 @@ public interface IEmisCreditSalesmenService
/**
* 删除销售信用额度信息
- *
+ *
* @param id 销售信用额度主键
* @return 结果
*/
public int deleteEmisCreditSalesmenById(Long id);
+
+ /**
+ * 查询销售理赔详情列表
+ *
+ * @param emisWaybill 运单查询条件
+ * @return 结算账单集合
+ */
+ public List selectSalesSatisfyDetailList(EmisWaybill emisWaybill);
}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCreditSalesmenServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCreditSalesmenServiceImpl.java
index 0408d756f..5a21aca46 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCreditSalesmenServiceImpl.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCreditSalesmenServiceImpl.java
@@ -1,10 +1,10 @@
-/**
+/**
* @Project: emis
* @Title: EmisCreditSalesmenServiceImpl.java
* @author linfso
* @date 2025-03-08 16:17:56
* @Copyright: ShangHai Duta 2022 All rights reserved.
- * @version v1.0
+ * @version v1.0
* @Description: 销售信用额度 实体类
*/
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
import com.xdadan.erp.emis.mapper.EmisCreditSalesmenMapper;
import com.xdadan.erp.emis.service.IEmisCreditSalesmenService;
+import com.xdadan.erp.emis.domain.EmisSettleBill;
/**
* 销售信用额度Service业务层处理
@@ -59,7 +60,7 @@ public class EmisCreditSalesmenServiceImpl extends EmisBaseService implements IE
/**
* 查询销售信用额度列表
- *
+ *
* @param emisCreditSalesmen 销售信用额度
* @return 销售信用额度
*/
@@ -145,8 +146,11 @@ public class EmisCreditSalesmenServiceImpl extends EmisBaseService implements IE
emisCreditSalesmen.setOverTermMoney(overTermMoney);
emisCreditSalesmen.setInTermMoney(inTermMoney);
+ // 理赔金额
+ BigDecimal satisfyMoney = calculateSatisfyMoney(emisWaybillList);
+ emisCreditSalesmen.setSatisfyMoney(satisfyMoney);
log.error("=====>useMoneyMap=1111====>{}", JSON.toJSONString(useMoneyMap));
- log.error("=====>useMoney=1111====>{}",useMoney.toString());
+ log.error("=====>useMoney=1111====>{}", useMoney.toString());
return emisCreditSalesmenMapper.updateEmisCreditSalesmen(emisCreditSalesmen);
}
@@ -173,4 +177,15 @@ public class EmisCreditSalesmenServiceImpl extends EmisBaseService implements IE
return emisCreditSalesmenMapper.deleteEmisCreditSalesmenById(id);
}
+ /**
+ * 查询销售理赔详情列表
+ *
+ * @param emisWaybill 运单查询条件
+ * @return 结算账单集合
+ */
+ @Override
+ public List selectSalesSatisfyDetailList(EmisWaybill emisWaybill) {
+ log.info("开始查询销售理赔详情列表");
+ return emisCreditSalesmenMapper.selectSalesSatisfyDetailList(emisWaybill);
+ }
}
diff --git a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
index bc6958f55..16a0b44a3 100644
--- a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
@@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
@@ -20,25 +21,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- select id, acc_code, salesmen, credit_money, use_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_credit_salesmen
+ select id, acc_code, salesmen, credit_money, use_money, over_term_money, in_term_money, satisfy_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_credit_salesmen
-
+
@@ -188,6 +189,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
use_money,
over_term_money,
in_term_Money,
+ satisfy_money,
currency,
trans_type,
start_date,
@@ -210,6 +212,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{useMoney},
#{overTermMoney},
#{inTermMoney},
+ #{satisfyMoney},
#{currency},
#{transType},
#{startDate},
@@ -234,6 +237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
use_money = #{useMoney},
over_term_money = #{overTermMoney},
in_term_Money = #{inTermMoney},
+ satisfy_money = #{satisfyMoney},
currency = #{currency},
trans_type = #{transType},
start_date = #{startDate},
@@ -267,4 +271,112 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
-
\ No newline at end of file
+
+
+
+