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 + + + +