From 7928d8fddbfd31fd2dbbfe59f676e25ea11fefad Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 1 Jul 2025 17:35:05 +0800 Subject: [PATCH 01/15] md --- .../erp/web/emis/EmisTransLineController.java | 25 ++++++++++++++++++- .../EmisSettleInvoiceChRecordServiceImpl.java | 11 +++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransLineController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransLineController.java index 303ac5fb9..798f20bc9 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransLineController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransLineController.java @@ -72,7 +72,7 @@ public class EmisTransLineController extends EmisBaseController * 查询线路列表 -- 精简 */ // @PreAuthorize("@ss.hasPermi('emis:emisTransLine:list')") - @JacksonFilter(include= {"id","lineCode","lineName","lineNameEn","meterRate","transType"},value= EmisTransLine.class,type= JacksonFilter.JscksonFilterType.RESPONSE) + @JacksonFilter(include= {"id","lineCode","lineName","lineNameEn","meterRate","transType","status"},value= EmisTransLine.class,type= JacksonFilter.JscksonFilterType.RESPONSE) @GetMapping("/listSimple") public TableDataInfo listSimple(EmisTransLine emisTransLine) { @@ -86,6 +86,29 @@ public class EmisTransLineController extends EmisBaseController + startPage(); + List list = emisTransLineService.selectEmisTransLineList(emisTransLine); + return getDataTable(list); + } + + /** + * 全部线路-包含停用 + * @param emisTransLine + * @return + */ + @JacksonFilter(include= {"id","lineCode","lineName","lineNameEn","meterRate","transType","status"},value= EmisTransLine.class,type= JacksonFilter.JscksonFilterType.RESPONSE) + @GetMapping("/listSimpleAll") + public TableDataInfo listSimpleAll(EmisTransLine emisTransLine) + { + // 总部不限制 + if(!(getLoginUser().getUser().isTopSite())){ + EmisSite site=emisBaseService.getSiteByCode(getLoginUser().getUser().getOwnerSiteCode()); + emisTransLine.setLogoType(site.getLogoType()); + emisTransLine.getParams().put("needFilterLogoTyoe","1"); + } + + + startPage(); List list = emisTransLineService.selectEmisTransLineList(emisTransLine); return getDataTable(list); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java index 2930151bd..83a097a3f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceChRecordServiceImpl.java @@ -470,7 +470,16 @@ public class EmisSettleInvoiceChRecordServiceImpl extends EmisBaseService implem order.setDetailInfos(goodsList); - JSONObject jRst =HXSdk.asyncOpenBillReceive(order,emisBaseInvoiceChInfo.getToken()); + + JSONObject jRst = null; + + try { + jRst = HXSdk.asyncOpenBillReceive(order, emisBaseInvoiceChInfo.getToken()); + }catch(Exception ex){ + ex.printStackTrace(); + throw new EmisBizError(EmisBizErrorType.FAIL,"航信税金系统出错,请联系航信人员"); + } + // 如果token失效则重新获取token再触发一次 /* "code": "B0301", From 402f38fee03b1d39bbc351a5b74d43e64d6a043c Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 07:09:20 +0800 Subject: [PATCH 02/15] md --- .../emis/domain/EmisTmsCostQuotePrice.java | 16 +++++ .../mapper/EmisTmsCostProfitMapper.xml | 26 ++++++++ .../mapper/EmisTmsCostQuotePriceMapper.xml | 59 ++++++++++++++++--- 3 files changed, 93 insertions(+), 8 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java index 5bd1b6b35..39aa6edff 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java @@ -43,10 +43,24 @@ public class EmisTmsCostQuotePrice extends BaseEntity private BigDecimal distance; /* 费用类型 运输费 */ private String feeType; + /* 总费用 */ + private BigDecimal fee; /* 计费单价 */ private BigDecimal price; /* 费用币种 */ private String currency; + /* 起始重量 */ + private Double startWeight; + /* 结束重量 */ + private Double endWeight; + /* 首重 */ + private Double initialWeight; + /* 续重 */ + private Double additionalWeight; + /* 条件表达式 */ + private String conditionExpression; + /* 计算表达式 */ + private String calculateExpression; /* 计费类型 1-重量计费 2-体积计费 */ private String billType; /* 供应商代码 */ @@ -57,6 +71,8 @@ public class EmisTmsCostQuotePrice extends BaseEntity /* 结束日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; + /* 启用状态 1-启用 0-停用 */ + private String blOpen; // 扩展字段 ------ diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml index 671196bc2..8283994a3 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml @@ -100,6 +100,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.calc_fee_type = #{params.calcFeeType} + + + and exists ( + select 1 from emis_waybill_batch_status ewbs where a.bill_code=ewbs.bill_code + ) + + + + and not exists ( + select 1 from emis_waybill_batch_status ewbs where a.bill_code=ewbs.bill_code + ) + + + + + and exists ( + select 1 from emis_waybill_batch_status ewbs where a.bill_code=ewbs.bill_code + ) + + + + and not exists ( + select 1 from emis_waybill_batch_status ewbs where a.bill_code=ewbs.bill_code + ) + + and a.send_date = ]]> #{params.beginSendDate} diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml index 535eb0a54..e42f4e27a 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml @@ -10,12 +10,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + @@ -32,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, start_site_code, next_site_code, distance, fee_type, price, currency, bill_type, supplier_code, start_date, end_date, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_cost_quote_price + select id, start_site_code, next_site_code, distance, fee_type, fee, price, currency, start_weight, end_weight, initial_weight, additional_weight, condition_expression, calculate_expression, bill_type, supplier_code, 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_tms_cost_quote_price + - + insert into emis_tms_cost_quote_price @@ -140,12 +159,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" next_site_code, distance, fee_type, + fee, price, currency, + start_weight, + end_weight, + initial_weight, + additional_weight, + condition_expression, + calculate_expression, bill_type, supplier_code, start_date, end_date, + bl_open, remark, tenant_id, del_flag, @@ -155,19 +182,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, create_site, update_site, - + #{id}, #{startSiteCode}, #{nextSiteCode}, #{distance}, #{feeType}, + #{fee}, #{price}, #{currency}, + #{startWeight}, + #{endWeight}, + #{initialWeight}, + #{additionalWeight}, + #{conditionExpression}, + #{calculateExpression}, #{billType}, #{supplierCode}, #{startDate}, #{endDate}, + #{blOpen}, #{remark}, #{tenantId}, #{delFlag}, @@ -177,7 +212,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateTime}, #{createSite}, #{updateSite}, - + @@ -187,12 +222,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" next_site_code = #{nextSiteCode}, distance = #{distance}, fee_type = #{feeType}, + fee = #{fee}, price = #{price}, currency = #{currency}, + start_weight = #{startWeight}, + end_weight = #{endWeight}, + initial_weight = #{initialWeight}, + additional_weight = #{additionalWeight}, + condition_expression = #{conditionExpression}, + calculate_expression = #{calculateExpression}, bill_type = #{billType}, supplier_code = #{supplierCode}, start_date = #{startDate}, end_date = #{endDate}, + bl_open = #{blOpen}, remark = #{remark}, tenant_id = #{tenantId}, del_flag = #{delFlag}, @@ -207,11 +250,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from emis_tms_cost_quote_price where id = #{id} + update emis_tms_cost_quote_price set del_flag='1' where id = #{id} - delete from emis_tms_cost_quote_price where id in + update emis_tms_cost_quote_price set del_flag='1' where id in #{id} From 774bd9be329b476f0a4cb1649537f5ff0c0e62c1 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 07:27:16 +0800 Subject: [PATCH 03/15] md --- .../emis/domain/EmisTmsCostQuotePrice.java | 10 +++- .../mapper/EmisTmsCostQuotePriceMapper.xml | 55 ++++++++++++++++++- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java index 39aa6edff..6dfb11996 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java @@ -43,8 +43,12 @@ public class EmisTmsCostQuotePrice extends BaseEntity private BigDecimal distance; /* 费用类型 运输费 */ private String feeType; - /* 总费用 */ + /* 固定总费用 */ private BigDecimal fee; + /* 最低价格 */ + private BigDecimal leastPrice; + /* 价格取值 */ + private String priceType; /* 计费单价 */ private BigDecimal price; /* 费用币种 */ @@ -66,10 +70,10 @@ public class EmisTmsCostQuotePrice extends BaseEntity /* 供应商代码 */ private String supplierCode; /* 开始日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date startDate; /* 结束日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endDate; /* 启用状态 1-启用 0-停用 */ private String blOpen; diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml index e42f4e27a..f9cc03dc1 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml @@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -40,7 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, start_site_code, next_site_code, distance, fee_type, fee, price, currency, start_weight, end_weight, initial_weight, additional_weight, condition_expression, calculate_expression, bill_type, supplier_code, 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_tms_cost_quote_price + select id, start_site_code, next_site_code, distance, fee_type, fee, least_price, price_type, price, currency, start_weight, end_weight, initial_weight, additional_weight, condition_expression, calculate_expression, bill_type, supplier_code, 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_tms_cost_quote_price + + @@ -146,7 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -160,6 +205,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" distance, fee_type, fee, + least_price, + price_type, price, currency, start_weight, @@ -190,6 +237,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{distance}, #{feeType}, #{fee}, + #{leastPrice}, + #{priceType}, #{price}, #{currency}, #{startWeight}, @@ -223,6 +272,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" distance = #{distance}, fee_type = #{feeType}, fee = #{fee}, + least_price = #{leastPrice}, + price_type = #{priceType}, price = #{price}, currency = #{currency}, start_weight = #{startWeight}, From aea06188e6d4c802319aa4ae7967f27dc62aa2fb Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 07:45:06 +0800 Subject: [PATCH 04/15] md --- .../com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java index 6dfb11996..130b4cd5d 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostQuotePrice.java @@ -70,15 +70,14 @@ public class EmisTmsCostQuotePrice extends BaseEntity /* 供应商代码 */ private String supplierCode; /* 开始日期 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date startDate; /* 结束日期 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; /* 启用状态 1-启用 0-停用 */ private String blOpen; - // 扩展字段 ------ /** 起始网点名称 */ private String startSiteName; From 66d6ae20af9cf76268a4570c27c1d8aaf97494cb Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 10:58:38 +0800 Subject: [PATCH 05/15] md --- .../mapper/EmisTmsCostQuotePriceMapper.java | 8 +- .../impl/EmisTmsCostFeeServiceImpl.java | 228 +++++++++++++----- .../mapper/EmisTmsCostQuotePriceMapper.xml | 50 +--- 3 files changed, 183 insertions(+), 103 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java index 1ae4c1c19..c6585abd2 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java @@ -32,11 +32,13 @@ public interface EmisTmsCostQuotePriceMapper extends BaseMapper matchTmsCostQuotePriceListByBillCode(@Param("billCode") String bilCode); + public List matchBatchFixedQuotePriceByBillCode(@Param("billCode") String bilCode,@Param("feeType") String feeType,@Param("blNeedMatchSupplier") String blNeedMatchSupplier); /** * 查询列表 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index d967e029f..169543bf9 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -13,9 +13,7 @@ package com.xdadan.erp.emis.service.impl; import java.math.BigDecimal; import java.text.ParseException; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -277,7 +275,9 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); log.info("网点取件费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); - BigDecimal splitCostFee = BigDecimal.valueOf(costFee).setScale(2,BigDecimal.ROUND_HALF_UP); + // 取件费按进1获取 + costFee=WaybillHelper.calcSettledFee(costFee,"5"); + BigDecimal splitCostFee = BigDecimal.valueOf(costFee).setScale(0,BigDecimal.ROUND_HALF_UP); splitItem.setCostFee(splitCostFee); splitItem.setCurrency("CNY"); splitItem.setCalcExpr(itemCalcExpr); @@ -349,6 +349,8 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); log.info("网点派送费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); + costFee=WaybillHelper.calcSettledFee(costFee,"5"); + BigDecimal splitCostFee = BigDecimal.valueOf(costFee).setScale(2,BigDecimal.ROUND_HALF_UP); splitItem.setCostFee(splitCostFee); splitItem.setCurrency("CNY"); @@ -365,72 +367,178 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); } - // 网点机场短驳费 + // 网点机场短驳费 - 1002 // (2)新创建表(短驳费):机场到网点之间的距离表;记录 起始网点、下一网点、开始日期、结束日期、公里数、单价、供应商、计费类型:按公斤 - // 从起始网点获取第一段批次 - // 根据单号和起始网点和短驳费用表找到是否有短驳费,获取短驳费单价 - List quotePriceList=emisTmsCostQuotePriceMapper.matchTmsCostQuotePriceListByBillCode(billCode); - if(!CollectionUtils.isEmpty(quotePriceList)){ - EmisTmsCostQuotePrice quotePrice0=quotePriceList.get(0); + List fixedQuotePrice1002List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1002","T"); + if(!CollectionUtils.isEmpty(fixedQuotePrice1002List)){ - EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); + // 检查重复 + Map existsMap = new HashMap(); + for (EmisTmsCostQuotePrice quotePriceItem : fixedQuotePrice1002List) { - splitItem.setBillCode(billCode); - splitItem.setMainBillCode(billCode); - splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 - splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 + // 如果网点重复就忽略 + String uniqKey = quotePriceItem.getStartSiteCode() + "-"+quotePriceItem.getNextSiteCode(); + if(existsMap.containsKey(uniqKey)){ + continue; + } + existsMap.put(uniqKey,1); - // 运输成本 - splitItem.setBlManual("1"); // 手工计算 - splitItem.setCostNo("-1"); // 固定成本 - splitItem.setBatchNo(quotePrice0.getBatchNo()); - splitItem.setTransWeight(quotePrice0.getTransWeight()); // 运输重量 - splitItem.setTransVolume(BigDecimal.ZERO); // 运输体积 + EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); - // 供应商 - splitItem.setSupplierCode(quotePrice0.getSupplierCode()); // 供应商 - splitItem.setTransSignNo(quotePrice0.getCarNo()); // 运输号 + splitItem.setBillCode(billCode); + splitItem.setMainBillCode(billCode); + splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 + splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 - // 起点到目的点 - splitItem.setSendPlace(quotePrice0.getStartSiteName()); - splitItem.setDestPlace(quotePrice0.getNextSiteName()); + // 运输成本 + splitItem.setBlManual("1"); // 手工计算 + splitItem.setCostNo("-1"); // 固定成本 + splitItem.setBatchNo(quotePriceItem.getBatchNo()); + splitItem.setTransWeight(quotePriceItem.getTransWeight()); // 运输重量 + splitItem.setTransVolume(BigDecimal.ZERO); // 运输体积 - splitItem.setBillMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM,waybill.getSendDate())); - splitItem.setTradeDate(waybill.getSignDate()); + // 供应商 + splitItem.setSupplierCode(quotePriceItem.getSupplierCode()); // 供应商 + splitItem.setTransSignNo(quotePriceItem.getCarNo()); // 运输号 - // 成本分摊 - splitItem.setFeeType("1002"); // 网点机场短驳费 - splitItem.setSplitType("1"); // 按重量分摊 - splitItem.setFeeItemId(-1L); // 无成本费用项来源 - splitItem.setSplitValue(waybill.getBillWeight()); // 分摊重量 + // 起点到目的点 + splitItem.setSendPlace(quotePriceItem.getStartSiteName()); + splitItem.setDestPlace(quotePriceItem.getNextSiteName()); - // 计算公式 首重1Kg 10元,续重1kg 1元 - // 总费用=单价*公里数 - BigDecimal totalDbCostFee = quotePrice0.getPrice().multiply(quotePrice0.getDistance()); - // 按总重量分摊 + splitItem.setBillMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM, waybill.getSendDate())); + splitItem.setTradeDate(waybill.getSignDate()); - String itemCalcExpr = "(w/t)*c"; - String calcExprStr=itemCalcExpr.replaceAll("w", waybill.getBillWeight().stripTrailingZeros().toPlainString()) - .replaceAll("t", quotePrice0.getTransWeight().stripTrailingZeros().toPlainString()) - .replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString()); + // 成本分摊 + splitItem.setFeeType("1002"); // 网点机场短驳费 + splitItem.setSplitType("1"); // 按重量分摊 + splitItem.setFeeItemId(-1L); // 无成本费用项来源 + splitItem.setSplitValue(waybill.getBillWeight()); // 分摊重量 - double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); + // 计算公式 首重1Kg 10元,续重1kg 1元 + // 总费用=单价*公里数 + BigDecimal totalDbCostFee = quotePriceItem.getPrice().multiply(quotePriceItem.getDistance()); + // 按总重量分摊 - log.info("网点机场短驳费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); + String itemCalcExpr = quotePriceItem.getCalculateExpression(); + String calcExprStr = itemCalcExpr.replaceAll("w", waybill.getBillWeight().stripTrailingZeros().toPlainString()) + .replaceAll("t", quotePriceItem.getTransWeight().stripTrailingZeros().toPlainString()) + .replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString()); - BigDecimal splitCostFee = BigDecimal.valueOf(costFee).setScale(2,BigDecimal.ROUND_HALF_UP); - splitItem.setCostFee(splitCostFee); - splitItem.setCurrency("CNY"); - splitItem.setCalcExpr(itemCalcExpr); - splitItem.setCalcRemark(calcExprStr+"="+splitCostFee.stripTrailingZeros().toPlainString()); - splitItem.setRemark("网点机场短驳费"); + double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); - // 总成本费用 - splitItem.setTransCostFee(totalDbCostFee); - splitItem.setCnyFee(totalDbCostFee); + log.info("网点机场短驳费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); - // 插入分摊明细数据 - emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); + costFee = WaybillHelper.calcSettledFee(costFee, quotePriceItem.getPriceType()); + + BigDecimal splitCostFee = BigDecimal.valueOf(costFee); + splitItem.setCostFee(splitCostFee); + splitItem.setCurrency("CNY"); + splitItem.setCalcExpr(itemCalcExpr); + splitItem.setCalcRemark(calcExprStr + "=" + splitCostFee.stripTrailingZeros().toPlainString()); + splitItem.setRemark("网点机场短驳费"); + + // 总成本费用 + splitItem.setTransCostFee(totalDbCostFee); + splitItem.setCnyFee(totalDbCostFee); + + // 插入分摊明细数据 + emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); + } + } + + + // 机场提货费操作费 - 1004 + List fixedQuotePrice1004List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1004","T"); + if(!CollectionUtils.isEmpty(fixedQuotePrice1004List)){ + + // 检查重复 + Map existsMap = new HashMap(); + for (EmisTmsCostQuotePrice quotePriceItem : fixedQuotePrice1004List) { + + // 如果网点重复就忽略 + String uniqKey = quotePriceItem.getStartSiteCode() + "-"+quotePriceItem.getNextSiteCode(); + if(existsMap.containsKey(uniqKey)){ + continue; + } + existsMap.put(uniqKey,1); + + // 计算 机场提货费操作费 + EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); + splitItem.setBillCode(billCode); + splitItem.setMainBillCode(billCode); + splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 + splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 + + // 运输成本 + splitItem.setBlManual("1"); // 手工计算 + splitItem.setCostNo("-1"); // 固定成本 + splitItem.setBatchNo(quotePriceItem.getBatchNo()); + splitItem.setTransWeight(quotePriceItem.getTransWeight()); // 运输重量 + splitItem.setTransVolume(BigDecimal.ZERO); // 运输体积 + + // 供应商 + splitItem.setSupplierCode(quotePriceItem.getSupplierCode()); // 供应商 + splitItem.setTransSignNo(quotePriceItem.getCarNo()); // 运输号 + + // 起点到目的点 + splitItem.setSendPlace(quotePriceItem.getStartSiteName()); + splitItem.setDestPlace(quotePriceItem.getNextSiteName()); + + splitItem.setBillMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM, waybill.getSendDate())); + splitItem.setTradeDate(waybill.getSignDate()); + + // 成本分摊 + splitItem.setFeeType("1004"); // 网点机场操作费 + splitItem.setSplitType("1"); // 按重量分摊 + splitItem.setFeeItemId(-1L); // 无成本费用项来源 + splitItem.setSplitValue(waybill.getBillWeight()); // 分摊重量 + + // 总费用=单价*公里数 + BigDecimal totalDbCostFee = quotePriceItem.getPrice().multiply(quotePriceItem.getDistance()); + + String itemCalcExpr = quotePriceItem.getCalculateExpression(); + + // 正常计算公司 + String calcExprStr = itemCalcExpr.replaceAll("w", waybill.getBillWeight().stripTrailingZeros().toPlainString()) + .replaceAll("t", quotePriceItem.getTransWeight().stripTrailingZeros().toPlainString()) + .replaceAll("d", quotePriceItem.getPrice().stripTrailingZeros().toPlainString()) + .replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString()); + + // 计算单次成本: 如果低于最低报价,则使用最低成本来分摊 + BigDecimal totalCost =quotePriceItem.getTransWeight().multiply(quotePriceItem.getPrice()); + if(totalCost.compareTo(quotePriceItem.getLeastPrice())<0){ + + totalDbCostFee=quotePriceItem.getLeastPrice(); // 总成本=最低报价 + + itemCalcExpr="(w/t)*c"; + calcExprStr = itemCalcExpr.replaceAll("w", waybill.getBillWeight().stripTrailingZeros().toPlainString()) + .replaceAll("t", quotePriceItem.getTransWeight().stripTrailingZeros().toPlainString()) + .replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString()); + + } + + + + double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); + + log.info("机场提货费操作费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); + + costFee = WaybillHelper.calcSettledFee(costFee, quotePriceItem.getPriceType()); + + BigDecimal splitCostFee = BigDecimal.valueOf(costFee); + splitItem.setCostFee(splitCostFee); + splitItem.setCurrency("CNY"); + splitItem.setCalcExpr(itemCalcExpr); + splitItem.setCalcRemark(calcExprStr + "=" + splitCostFee.stripTrailingZeros().toPlainString()); + splitItem.setRemark("机场提货费操作费"); + + // 总成本费用 + splitItem.setTransCostFee(totalDbCostFee); + splitItem.setCnyFee(totalDbCostFee); + + // 插入分摊明细数据 + emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); + } } // 搜索已录入成本的费用分摊 @@ -444,6 +552,8 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService } } } + + mergeCostFeeByBillCode(billCode); return 1; @@ -956,4 +1066,12 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService return 1; } + public static void main(String[] args) { + double costFee=WaybillHelper.calcSettledFee(0.001,"5"); +// BigDecimal splitCostFee = BigDecimal.valueOf(costFee).setScale(0,BigDecimal.ROUND_HALF_UP); + System.out.println(costFee); + } + + + } diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml index f9cc03dc1..1a1c34cca 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml @@ -27,7 +27,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -74,7 +73,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT DISTINCT a.start_site_code, @@ -108,54 +107,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND c.del_flag = '0' AND a.start_site_code = b.start_site_code AND a.next_site_code = b.next_site_code - AND a.supplier_code = b.supplier_code + + AND a.supplier_code = b.supplier_code + AND b.batch_no = c.batch_no and a.start_date b.etd and b.etd a.end_date + and a.fee_type = #{feeType} AND c.bill_code = #{billCode} - limit 1 - - - - SELECT DISTINCT a.start_site_code, @@ -107,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND c.del_flag = '0' AND a.start_site_code = b.start_site_code AND a.next_site_code = b.next_site_code - + AND a.supplier_code = b.supplier_code AND b.batch_no = c.batch_no From 7ade873106e75151241df661406178a96291b716 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 11:08:54 +0800 Subject: [PATCH 07/15] md --- .../src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml index 0e7229279..7d373c7ec 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml @@ -107,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND c.del_flag = '0' AND a.start_site_code = b.start_site_code AND a.next_site_code = b.next_site_code - + AND a.supplier_code = b.supplier_code AND b.batch_no = c.batch_no From e81f3f7ea9cb26a8092f3b2cbf2c180cc31c3d44 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 11:14:22 +0800 Subject: [PATCH 08/15] md --- .../xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java | 2 +- .../erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java | 4 ++-- .../src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java index c6585abd2..3d512243f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostQuotePriceMapper.java @@ -38,7 +38,7 @@ public interface EmisTmsCostQuotePriceMapper extends BaseMapper matchBatchFixedQuotePriceByBillCode(@Param("billCode") String bilCode,@Param("feeType") String feeType,@Param("blNeedMatchSupplier") String blNeedMatchSupplier); + public List matchBatchFixedQuotePriceByBillCode(@Param("billCode") String bilCode,@Param("feeType") String feeType,@Param("blNeedMatchSupplier") Integer blNeedMatchSupplier); /** * 查询列表 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 9ca42ae2a..08a2f0a2b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -369,7 +369,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService // 网点机场短驳费 - 1002 // (2)新创建表(短驳费):机场到网点之间的距离表;记录 起始网点、下一网点、开始日期、结束日期、公里数、单价、供应商、计费类型:按公斤 - List fixedQuotePrice1002List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1002","T"); + List fixedQuotePrice1002List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1002",1); if(!CollectionUtils.isEmpty(fixedQuotePrice1002List)){ // 检查重复 @@ -448,7 +448,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService // 机场提货费操作费 - 1004 - List fixedQuotePrice1004List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1004","F"); + List fixedQuotePrice1004List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1004",-1); if(!CollectionUtils.isEmpty(fixedQuotePrice1004List)){ // 检查重复 diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml index 7d373c7ec..2748846c2 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostQuotePriceMapper.xml @@ -107,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND c.del_flag = '0' AND a.start_site_code = b.start_site_code AND a.next_site_code = b.next_site_code - + AND a.supplier_code = b.supplier_code AND b.batch_no = c.batch_no From 8dc9c4146a2579fece8371266408a5cd5afab09a Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 11:22:13 +0800 Subject: [PATCH 09/15] md --- .../erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 08a2f0a2b..f26813562 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -485,7 +485,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService splitItem.setDestPlace(quotePriceItem.getNextSiteName()); splitItem.setBillMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM, waybill.getSendDate())); - splitItem.setTradeDate(waybill.getSignDate()); + splitItem.setTradeDate(quotePriceItem.getEtd()); // 成本分摊 splitItem.setFeeType("1004"); // 网点机场操作费 @@ -517,8 +517,6 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService } - - double costFee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); log.info("机场提货费操作费:计算公式:" + calcExprStr + ",重量:" + waybill.getBillWeight().stripTrailingZeros().toPlainString()); From 86b5b368ddbacf3cd096dfdf94cf05a920a90425 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 12:05:30 +0800 Subject: [PATCH 10/15] md --- .../mapper/EmisTmsCostFeeSplitMapper.java | 2 + .../impl/EmisTmsCostFeeServiceImpl.java | 114 ++++++++++-------- .../mapper/EmisTmsCostFeeSplitMapper.xml | 12 +- 3 files changed, 79 insertions(+), 49 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java index dfbdad0d1..866194a40 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java @@ -84,6 +84,8 @@ public interface EmisTmsCostFeeSplitMapper extends BaseMapper fixedQuotePrice1002List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1002",1); if(!CollectionUtils.isEmpty(fixedQuotePrice1002List)){ - // 检查重复 Map existsMap = new HashMap(); for (EmisTmsCostQuotePrice quotePriceItem : fixedQuotePrice1002List) { @@ -386,7 +405,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); splitItem.setBillCode(billCode); - splitItem.setMainBillCode(billCode); + splitItem.setMainBillCode(mainBillCode); splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 @@ -436,7 +455,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService splitItem.setCalcExpr(itemCalcExpr); splitItem.setCalcRemark(calcExprStr + "=" + splitCostFee.stripTrailingZeros().toPlainString()); splitItem.setRemark("网点机场短驳费"); - + splitItem.setBlVirtual(waybill.getBlVirtual()); // 总成本费用 splitItem.setTransCostFee(totalDbCostFee); splitItem.setCnyFee(totalDbCostFee); @@ -446,7 +465,6 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService } } - // 机场提货费操作费 - 1004 List fixedQuotePrice1004List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1004",-1); if(!CollectionUtils.isEmpty(fixedQuotePrice1004List)){ @@ -465,7 +483,8 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService // 计算 机场提货费操作费 EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); splitItem.setBillCode(billCode); - splitItem.setMainBillCode(billCode); + + splitItem.setMainBillCode(mainBillCode); splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 @@ -494,7 +513,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService splitItem.setSplitValue(waybill.getBillWeight()); // 分摊重量 // 总费用=单价*公里数 - BigDecimal totalDbCostFee = quotePriceItem.getPrice().multiply(quotePriceItem.getDistance()); + BigDecimal totalDbCostFee = quotePriceItem.getPrice().multiply(quotePriceItem.getTransWeight()); String itemCalcExpr = quotePriceItem.getCalculateExpression(); @@ -505,11 +524,9 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService .replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString()); // 计算单次成本: 如果低于最低报价,则使用最低成本来分摊 - BigDecimal totalCost =quotePriceItem.getTransWeight().multiply(quotePriceItem.getPrice()); - if(totalCost.compareTo(quotePriceItem.getLeastPrice())<0){ + if( totalDbCostFee.doubleValue() < quotePriceItem.getLeastPrice().doubleValue() ){ totalDbCostFee=quotePriceItem.getLeastPrice(); // 总成本=最低报价 - itemCalcExpr="(w/t)*c"; calcExprStr = itemCalcExpr.replaceAll("w", waybill.getBillWeight().stripTrailingZeros().toPlainString()) .replaceAll("t", quotePriceItem.getTransWeight().stripTrailingZeros().toPlainString()) @@ -533,6 +550,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService // 总成本费用 splitItem.setTransCostFee(totalDbCostFee); splitItem.setCnyFee(totalDbCostFee); + splitItem.setBlVirtual(waybill.getBlVirtual()); // 插入分摊明细数据 emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml index cb506445c..4ea49e016 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml @@ -115,7 +115,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.batch_no=#{batchNo} and a.fee_item_id = #{feeItemId} - and ( FIND_IN_SET(a.main_bill_code,#{billCode}) or a.main_bill_code like concat('%', #{billCode}, '%') ) + and ( FIND_IN_SET(a.bill_code,#{billCode}) or a.bill_code like concat('%', #{billCode}, '%') ) + + + and ( FIND_IN_SET(a.main_bill_code,#{mainBillCode}) or a.main_bill_code like concat('%', #{mainBillCode}, '%') ) and a.send_place=#{sendPlace} and a.dest_place=#{destPlace} @@ -345,6 +348,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update emis_tms_cost_fee_split set del_flag='1' where del_flag='0' and cost_no = #{costNo} + + update emis_tms_cost_fee_split set del_flag='1' + where del_flag='0' + and bill_code = #{billCode} + and fee_type = #{feeType} + + update emis_tms_cost_fee_split set del_flag='1' where del_flag='0' From 20fa4aae663c683f20a59422a0766f4c2d3b9a7a Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 12:39:01 +0800 Subject: [PATCH 11/15] md --- .../erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 327df9f4c..5e04c6ab9 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -798,14 +798,21 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService } EmisWaybill waybill = billCodeItem.getWaybillDetail(); + + String mainBillCode=waybill.getBillCode(); + if("1".equals(waybill.getBlVirtual())){ + mainBillCode=waybill.getMasterBillCode(); + } + EmisTmsCostFee costFeeDetail= billCodeItem.getCostFeeDetail(); + // 循环费用类型 for (EmisTmsCostFeeFeeitem feeItem: listFeeItemRel) { EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); splitItem.setBillCode(billCode); - splitItem.setMainBillCode(billCode); + splitItem.setMainBillCode(mainBillCode); splitItem.setBillWeight(waybill.getBillWeight()); // 运单重量 splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积 From e627d5dcb0cc814252e8d72d45525d756723f17a Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 12:44:04 +0800 Subject: [PATCH 12/15] md --- .../erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 5e04c6ab9..679ca6c49 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -964,12 +964,12 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService updProfit.setBillFee(emisTmsCostProfit.getBillFee()); // 获取主单成本费用 - double costFee=emisTmsCostFeeSplitMapper.getCostFeeByMainBillCode(billCode); + double costFee=emisTmsCostFeeSplitMapper.getCostFeeByMainBillCode(mainBillCode); updProfit.setCostFee(BigDecimal.valueOf(costFee)); updProfit.setBillProfit(emisTmsCostProfit.getBillFee().subtract(updProfit.getCostFee())); emisTmsCostProfitMapper.updateEmisTmsCostProfit(updProfit); - log.info("==>费用计算:==>:{}: {}-{}=",billCode,updProfit.getBillFee(),updProfit.getCostFee(),updProfit.getBillProfit()); + log.info("==>费用计算:==>:{}:{}-{}=",mainBillCode+":"+billCode,updProfit.getBillFee(),updProfit.getCostFee(),updProfit.getBillProfit()); return 1; } From 4f1dbcf3c45d5fafd761af58ced908187c7a8b98 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 12:51:23 +0800 Subject: [PATCH 13/15] md --- .../xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 679ca6c49..a35cdb4ef 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -550,6 +550,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService // 总成本费用 splitItem.setTransCostFee(totalDbCostFee); splitItem.setCnyFee(totalDbCostFee); + splitItem.setPrice(quotePriceItem.getPrice()); splitItem.setBlVirtual(waybill.getBlVirtual()); // 插入分摊明细数据 From 7ce7b3885f670332b1c2ce21d59a1669203aebf6 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 13:19:51 +0800 Subject: [PATCH 14/15] md --- .../src/main/resources/mapper/EmisTmsCostProfitMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml index 8283994a3..053e04d15 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml @@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.bill_code=b.bill_code and a.del_flag='0' and b.del_flag='0' and b.id = #{id} - and FIND_IN_SET(b.`bill_code`,#{billCode}) + and ( FIND_IN_SET(b.`bill_code`,#{billCode}) or FIND_IN_SET(b.`master_bill_code`,#{billCode}) ) and b.standard_fee = #{standardFee} and b.bill_fee = #{billFee} and b.cost_fee = #{costFee} @@ -228,11 +228,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from emis_tms_cost_profit where id = #{id} + update emis_tms_cost_profit set del_flag='1' where id = #{id} - delete from emis_tms_cost_profit where id in + update emis_tms_cost_profit set del_flag='1' where id in #{id} From e221e0593d4ed5b6949d4930895f8017ffe382b6 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 2 Jul 2025 13:36:38 +0800 Subject: [PATCH 15/15] md --- .../src/main/resources/mapper/EmisTmsCostProfitMapper.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml index 053e04d15..5219138ef 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml @@ -37,7 +37,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.bill_code=b.bill_code and a.del_flag='0' and b.del_flag='0' and b.id = #{id} - and ( FIND_IN_SET(b.`bill_code`,#{billCode}) or FIND_IN_SET(b.`master_bill_code`,#{billCode}) ) + + and ( + FIND_IN_SET(b.`bill_code`,#{billCode}) or + exists ( + select 1 from emis_waybill c where c.master_bill_code = a.bill_code and FIND_IN_SET(c.`bill_code`,#{billCode}) + ) + ) and b.standard_fee = #{standardFee} and b.bill_fee = #{billFee} and b.cost_fee = #{costFee}