From f80f9983ecc2e8942b5d6fa3b85dd7f4aed147aa Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 12 Dec 2025 10:42:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?demand:=20=20=20=20tms-=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=B4=A7=E7=89=A9=E7=BB=84=E6=89=B9?= =?UTF-8?q?=E6=AC=A1-=E7=BB=84=E6=89=B9=E6=AC=A1=E9=AA=8C=E9=87=8D?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E6=8F=90?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E9=AA=8C=E9=87=8D=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml index 72751746b..f29693505 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml @@ -333,6 +333,9 @@ and start_site_code = #{startSiteCode} and next_site_code = #{nextSiteCode} and supplier_code=#{supplierCode} + + and car_no = #{carNo} + and batch_no in (select batch_no from emis_tms_site_batch_dtl where del_flag='0' and FIND_IN_SET(`bill_code` , #{params.billCode}) ) From 7de119b530e4e2e2e19da2043ef8e5b1f585cbad Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 12 Dec 2025 11:02:50 +0800 Subject: [PATCH 2/5] =?UTF-8?q?demand:=20=20=20=20tms-=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=B4=A7=E7=89=A9=E7=BB=84=E6=89=B9?= =?UTF-8?q?=E6=AC=A1-=E6=96=B0=E5=A2=9E/=E4=BF=AE=E6=94=B9=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E6=A0=A1=E9=AA=8C=E4=BB=B6=E6=95=B0=E3=80=81?= =?UTF-8?q?=E9=87=8D=E9=87=8F=E4=BD=93=E7=A7=AF=E6=97=B6=E5=8F=AA=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=BF=90=E8=BE=93=E5=8F=B7=E7=9B=B8=E5=90=8C=E7=9A=84?= =?UTF-8?q?=20=20tms-=E8=BF=90=E8=BE=93=E7=AE=A1=E7=90=86-=E8=B4=A7?= =?UTF-8?q?=E7=89=A9=E7=BB=84=E6=89=B9=E6=AC=A1-=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3-?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=BF=90=E5=8D=95=E5=89=A9=E4=BD=99=E4=BB=B6?= =?UTF-8?q?=E6=95=B0=E3=80=81=E9=87=8D=E9=87=8F=E3=80=81=E4=BD=93=E7=A7=AF?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E6=9F=A5=E8=AF=A2=E8=BF=90=E8=BE=93=E5=8F=B7?= =?UTF-8?q?=E7=9B=B8=E5=90=8C=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emis/mapper/EmisTmsSiteBatchMapper.java | 37 ++++++++++--------- .../service/IEmisTmsSiteBatchService.java | 6 ++- .../impl/EmisTmsSiteBatchDtlServiceImpl.java | 23 +++++++----- .../impl/EmisTmsSiteBatchServiceImpl.java | 5 ++- .../mapper/EmisTmsSiteBatchMapper.xml | 3 ++ 5 files changed, 44 insertions(+), 30 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java index fead43f6e..b5a8a5d18 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java @@ -1,10 +1,10 @@ -/** +/** * @Project: emis * @Title: EmisTmsSiteBatchMapper.java * @author linfso * @date 2024-03-01 08:54:56 * @Copyright: ShangHai Doitinfo 2022 All rights reserved. - * @version v1.0 + * @version v1.0 * @Description:

一级网点TMS组批次 Mapper 接口

* Warning : This file is generate by ai tools,don't edit!!! */ @@ -29,13 +29,13 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper /** * 主键查询 * @param id - * @return + * @return */ public EmisTmsSiteBatch selectEmisTmsSiteBatchById(Long id); /** * 主键查询(包含明细和装载信息) - * + * * @param id * @return */ @@ -48,8 +48,8 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper /** * 查询列表 - * - * @param emisTmsSiteBatch + * + * @param emisTmsSiteBatch * @return 集合 */ public List selectEmisTmsSiteBatchList(EmisTmsSiteBatch emisTmsSiteBatch); @@ -64,25 +64,25 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper public List selectWaitDoProfitList(EmisTmsSiteBatch emisTmsSiteBatch); /** - * 新增 - * + * 新增 + * * @param emisTmsSiteBatch - * @return + * @return */ public int insertEmisTmsSiteBatch(EmisTmsSiteBatch emisTmsSiteBatch); /** * 修改 - * - * @param emisTmsSiteBatch - * @return + * + * @param emisTmsSiteBatch + * @return */ @DataAuditLog(operateType= OperateType.UPDATE,serviceClass= EmisTmsSiteBatchServiceImpl.class) public int updateEmisTmsSiteBatch(EmisTmsSiteBatch emisTmsSiteBatch); /** * 删除 - * + * * @param id 主键 * @return 结果 */ @@ -90,7 +90,7 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper /** * 批量删除 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ @@ -119,7 +119,7 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper /** * 根据运单号列表查询组批次信息 - * + * * @param billCodes 运单号列表 * @return 组批次信息列表 */ @@ -130,13 +130,16 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper * * @param startSiteCode 起始网点编码 * @param nextSiteCode 下一网点编码 + * @param carNo 运输号 * @param billCode 运单号 * @param id * @return TMS组批次列表 */ - List selectTmsSiteBatchBySiteAndBillCode(@Param("startSiteCode") String startSiteCode, + List selectTmsSiteBatchBySiteAndBillCode( + @Param("startSiteCode") String startSiteCode, @Param("nextSiteCode") String nextSiteCode, - @Param("billCode") String billCode, @Param("id")Long id); + @Param("carNo") String carNo, + @Param("billCode") String billCode, @Param("id") Long id); /** * 验重 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java index 83bdbbc98..d33f7e2c7 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsSiteBatchService.java @@ -46,12 +46,14 @@ public interface IEmisTmsSiteBatchService extends IDataAuditService * * @param startSiteCode 起始网点编码 * @param nextSiteCode 下一网点编码 + * @param carNo * @param billCode 运单号 * @param id * @return TMS组批次列表 */ - public List selectTmsSiteBatchBySiteAndBillCode(String startSiteCode, String nextSiteCode, - String billCode, Long id); + public List selectTmsSiteBatchBySiteAndBillCode( + String startSiteCode, String nextSiteCode, + String carNo, String billCode, Long id); /** * 查询一级网点TMS组批次列表 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java index 08bb15d76..6e028d112 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java @@ -1,10 +1,10 @@ -/** +/** * @Project: emis * @Title: EmisTmsSiteBatchDtlServiceImpl.java * @author linfso * @date 2024-03-01 08:54:57 * @Copyright: ShangHai Duta 2022 All rights reserved. -* @version v1.0 +* @version v1.0 * @Description:

一级网点TMS组批次明细 实体类

*/ @@ -34,7 +34,7 @@ import com.xdadan.erp.emis.service.IEmisTmsSiteBatchDtlService; /** * 一级网点TMS组批次明细Service业务层处理 - * + * * @author linfso * @date 2024-03-01 08:54:57 */ @@ -57,7 +57,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 查询一级网点TMS组批次明细 - * + * * @param id 一级网点TMS组批次明细主键 * @return 一级网点TMS组批次明细 */ @@ -68,7 +68,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 查询一级网点TMS组批次明细列表 - * + * * @param emisTmsSiteBatchDtl 一级网点TMS组批次明细 * @return 一级网点TMS组批次明细 */ @@ -93,7 +93,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 新增一级网点TMS组批次明细 - * + * * @param emisTmsSiteBatchDtl 一级网点TMS组批次明细 * @return 结果 */ @@ -107,7 +107,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 修改一级网点TMS组批次明细 - * + * * @param emisTmsSiteBatchDtl 一级网点TMS组批次明细 * @return 结果 */ @@ -118,7 +118,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 批量删除一级网点TMS组批次明细 - * + * * @param ids 需要删除的一级网点TMS组批次明细主键 * @return 结果 */ @@ -129,7 +129,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi /** * 删除一级网点TMS组批次明细信息 - * + * * @param id 一级网点TMS组批次明细主键 * @return 结果 */ @@ -149,6 +149,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi String batchNo = emisTmsSiteBatchDtl.getBatchNo(); String startSiteCode = (String) emisTmsSiteBatchDtl.getParams().get("startSiteCode"); String nextSiteCode = (String) emisTmsSiteBatchDtl.getParams().get("nextSiteCode"); + String carNo = (String) emisTmsSiteBatchDtl.getParams().get("carNo"); String supplierCode = (String) emisTmsSiteBatchDtl.getParams().get("supplierCode"); // 参数校验 @@ -161,6 +162,9 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi if (StringUtils.isBlank(nextSiteCode)) { throw new EmisBizError(EmisBizErrorType.FAIL, "下一网点编码不能为空"); } + if (StringUtils.isBlank(carNo)) { + throw new EmisBizError(EmisBizErrorType.FAIL, "运输号不能为空"); + } // 查询运单信息 EmisWaybill emisWaybill = emisWaybillMapper.selectEmisWaybillByBillCode(billCode); @@ -200,6 +204,7 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi List existingBatches = emisTmsSiteBatchMapper.selectTmsSiteBatchBySiteAndBillCode( startSiteCode, nextSiteCode, + carNo, billCode, null); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java index d826c64f1..200aafecc 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java @@ -111,8 +111,8 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi @Override public List selectTmsSiteBatchBySiteAndBillCode(String startSiteCode, String nextSiteCode, - String billCode, Long id) { - return emisTmsSiteBatchMapper.selectTmsSiteBatchBySiteAndBillCode(startSiteCode, nextSiteCode, billCode, id); + String carNo, String billCode, Long id) { + return emisTmsSiteBatchMapper.selectTmsSiteBatchBySiteAndBillCode(startSiteCode, nextSiteCode, carNo, billCode, id); } /** @@ -209,6 +209,7 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi List existingBatches = selectTmsSiteBatchBySiteAndBillCode( oldSiteBatch.getStartSiteCode(), oldSiteBatch.getNextSiteCode(), + oldSiteBatch.getCarNo(), itemDtl.getBillCode(), itemDtl.getId()); if (itemDtl.getId() != null) { existingBatches = existingBatches.stream().filter(i -> !itemDtl.getBatchNo().equals(i.getBatchNo())) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml index f29693505..12b5b5821 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml @@ -577,6 +577,9 @@ left join emis_waybill w on d.bill_code = w.bill_code and w.del_flag = '0' where b.start_site_code = #{startSiteCode} and b.next_site_code = #{nextSiteCode} + + and b.car_no = #{carNo} + and d.bill_code = #{billCode} and b.del_flag = '0' and d.del_flag = '0' From 4d2ac65d80639ca29eaf3752602daf534b7b2a7f Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 12 Dec 2025 11:11:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?demand:=20=20=20=20tms-=E8=BF=90=E8=BE=93?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=B4=A7=E7=89=A9=E7=BB=84=E6=89=B9?= =?UTF-8?q?=E6=AC=A1-=E6=96=B0=E5=A2=9E/=E4=BF=AE=E6=94=B9=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E6=A0=A1=E9=AA=8C=E4=BB=B6=E6=95=B0=E3=80=81?= =?UTF-8?q?=E9=87=8D=E9=87=8F=E4=BD=93=E7=A7=AF=E6=97=B6=E5=8F=AA=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=BF=90=E8=BE=93=E5=8F=B7=E7=9B=B8=E5=90=8C=E7=9A=84?= =?UTF-8?q?=20=20tms-=E8=BF=90=E8=BE=93=E7=AE=A1=E7=90=86-=E8=B4=A7?= =?UTF-8?q?=E7=89=A9=E7=BB=84=E6=89=B9=E6=AC=A1-=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3-?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=BF=90=E5=8D=95=E5=89=A9=E4=BD=99=E4=BB=B6?= =?UTF-8?q?=E6=95=B0=E3=80=81=E9=87=8D=E9=87=8F=E3=80=81=E4=BD=93=E7=A7=AF?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E6=9F=A5=E8=AF=A2=E8=BF=90=E8=BE=93=E5=8F=B7?= =?UTF-8?q?=E7=9B=B8=E5=90=8C=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml index 12b5b5821..daa95c62b 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml @@ -583,7 +583,7 @@ and d.bill_code = #{billCode} and b.del_flag = '0' and d.del_flag = '0' - and d.waybill_batch_status != '2' +-- and d.waybill_batch_status != '2' AND d.id != #{id} group by b.id, b.batch_no, b.batch_name, b.batch_date, b.supplier_code, b.trans_line_type, b.product_type, b.batch_type, b.trans_type, b.start_site_code, b.send_country, From cbcae37f235b2c5256aaa3aa23218b593221c19b Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 12 Dec 2025 13:13:24 +0800 Subject: [PATCH 4/5] =?UTF-8?q?demand:=20=20=20=20TMS-=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86-=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E8=B4=A6=E5=8D=95=E7=A1=AE=E8=AE=A4-=E6=B5=B7=E8=BF=90?= =?UTF-8?q?=E8=B4=A6=E5=8D=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisSettleBillServiceImpl.java | 103 ++++++++++++++++-- .../mapper/EmisSettleSubBillFeeitemMapper.xml | 4 +- 2 files changed, 96 insertions(+), 11 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java index 6df1c0373..eb3c622c5 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java @@ -21,8 +21,13 @@ import cn.hutool.core.map.MapUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.write.handler.AbstractCellWriteHandler; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteTable; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.metadata.style.WriteFont; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; @@ -46,8 +51,11 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.Cell; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.xdadan.erp.emis.service.IEmisSettleBillService; @@ -1245,6 +1253,8 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS // 结算对象 String settlement = Optional.ofNullable(list.get(0)).map(e -> StringUtil.isNotBlank(e.getCustName()) ? e.getCustName() : e.getCustomerName()).orElse(""); + settlement = Optional.ofNullable(settlement).orElse("").replace("ST", ""); + final String settlementDisplay = settlement; // 根据运单号查询运单详情 List emisWaybills = emisSettleSubBillFeeitemMapper @@ -1303,36 +1313,106 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS ExcelWriter excelWriter = EasyExcel.write(outputStream).excelType(ExcelTypeEnum.XLSX).build(); List> contentHeader = this.buildHeader(); - HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(null, + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + AbstractCellWriteHandler headerStyleHandler = new AbstractCellWriteHandler() { + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, + List> cellDataList, Cell cell, Head head, + Integer relativeRowIndex, Boolean isHead) { + if (!Boolean.TRUE.equals(isHead)) { + return; + } + int rowIndex = cell.getRowIndex(); + WriteCellStyle style = cellDataList.get(0).getOrCreateStyle(); + WriteFont font = style.getWriteFont(); + if (font == null) { + font = new WriteFont(); + style.setWriteFont(font); + } + switch (rowIndex) { + case 0: + font.setFontHeightInPoints((short) 8); + font.setBold(Boolean.FALSE); + font.setColor(IndexedColors.BLACK.getIndex()); + style.setHorizontalAlignment(HorizontalAlignment.LEFT); + break; + case 1: + font.setFontHeightInPoints((short) 14); + font.setBold(Boolean.FALSE); + font.setColor(IndexedColors.BLACK.getIndex()); + style.setHorizontalAlignment(HorizontalAlignment.CENTER); + break; + case 3: + font.setFontHeightInPoints((short) 12); + font.setBold(Boolean.TRUE); + font.setColor(IndexedColors.RED.getIndex()); + style.setFillForegroundColor(IndexedColors.WHITE.getIndex()); + style.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + style.setHorizontalAlignment(HorizontalAlignment.CENTER); + break; + default: + break; + } + cellDataList.get(0).setWriteCellStyle(style); + } + }; + + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + // 样式:日期行单独,后续保持原样 + WriteCellStyle dateContentStyle = new WriteCellStyle(); + dateContentStyle.setVerticalAlignment(VerticalAlignment.CENTER); + dateContentStyle.setHorizontalAlignment(HorizontalAlignment.LEFT); + dateContentStyle.setBorderLeft(BorderStyle.THIN); + dateContentStyle.setBorderRight(BorderStyle.THIN); + dateContentStyle.setBorderTop(BorderStyle.THIN); + dateContentStyle.setBorderBottom(BorderStyle.THIN); + WriteFont dateFont = new WriteFont(); + dateFont.setFontName("微软雅黑"); + dateFont.setFontHeightInPoints((short) 8); + dateContentStyle.setWriteFont(dateFont); + + // 日期行:单独写入并使用独立样式,按列头数量合并 + WriteSheet dateSheet = EasyExcel.writerSheet("sheet").needHead(Boolean.FALSE) + .registerWriteHandler(new HorizontalCellStyleStrategy(null, dateContentStyle)) + .registerWriteHandler(headerStyleHandler) + .registerWriteHandler(new CellStyleStrategy(new WriteCellStyle())).build(); + List> headerDate = contentHeader.stream() + .map(item -> Collections.singletonList("出账日期:" + date)) + .collect(Collectors.toList()); + WriteTable tDate = EasyExcel.writerTable(0).needHead(Boolean.TRUE).head(headerDate).build(); + excelWriter.write((Collection) null, dateSheet, tDate); + // 构建大表头 WriteSheet writeSheet1 = EasyExcel.writerSheet("sheet").needHead(Boolean.FALSE) .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(headerStyleHandler) .registerWriteHandler(new CellStyleStrategy(new WriteCellStyle())).build(); + List> header1 = contentHeader.stream().map(item -> Collections.singletonList("探路供应链(上海)")) .collect(Collectors.toList()); - WriteTable t1 = EasyExcel.writerTable(0).needHead(Boolean.TRUE).head(header1).build(); + WriteTable t1 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(header1).build(); excelWriter.write((Collection) null, writeSheet1, t1); List> header2 = contentHeader.stream() .map(item -> Collections.singletonList(year + "年" + month + "月海运费确认书")) .collect(Collectors.toList()); - WriteTable t2 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(header2).build(); + WriteTable t2 = EasyExcel.writerTable(2).needHead(Boolean.TRUE).head(header2).build(); excelWriter.write((Collection) null, writeSheet1, t2); List> header3 = contentHeader.stream() - .map(item -> Collections.singletonList("结算对象:" + settlement)) + .map(item -> Collections.singletonList("结算对象:" + settlementDisplay)) .collect(Collectors.toList()); - header3.set(9, Collections.singletonList("出账日期:" + date)); - header3.set(10, Collections.singletonList("出账日期:" + date)); - header3.set(11, Collections.singletonList("出账日期:" + date)); - WriteTable t3 = EasyExcel.writerTable(2).needHead(Boolean.TRUE).head(header3).build(); + WriteTable t3 = EasyExcel.writerTable(3).needHead(Boolean.TRUE).head(header3).build(); excelWriter.write((Collection) null, writeSheet1, t3); log.info("Building a large header is success"); List excelKey = emisWaybillMap.keySet().stream().collect(Collectors.toList()); - int num = 3; + int num = 4; for (int i = 0; i < excelKey.size(); i++) { List> result = new ArrayList<>(); Map subtotalMap = new HashMap<>(); @@ -1341,6 +1421,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS List settleSubBillFeeitemList = emisWaybill.getSettleSubBillFeeitemList(); calculateSubtotal(settleSubBillFeeitemList, subtotalMap); settleSubBillFeeitemList.forEach(item -> { + String remark = Optional.ofNullable(item.getRemark()).orElse(""); result.add(Lists.newArrayList(emisWaybill.getLadingBillCode(), emisWaybill.getBillCode(), emisWaybill.getCompanyCode(), emisWaybill.getDeparturePortName(), emisWaybill.getDestinationPortName(), emisWaybill.getBoxQuantity(), @@ -1348,7 +1429,8 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS emisWaybill.getBillWeight().stripTrailingZeros().toPlainString(), emisWaybill.getTotalVolume().stripTrailingZeros().toPlainString(), item.getFeeName(), item.getCurrency(), - item.getBillFee().stripTrailingZeros().toPlainString())); + item.getBillFee().stripTrailingZeros().toPlainString(), + remark)); }); // 小表头 WriteSheet sheet = EasyExcel.writerSheet("sheet") @@ -1416,6 +1498,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS header.add(Collections.singletonList("费用名称")); header.add(Collections.singletonList("币种")); header.add(Collections.singletonList("金额")); + header.add(Collections.singletonList("备注")); return header; } diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml index 48f174587..8314723a2 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml @@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -66,7 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.bill_fee, b.orig_fee, b.currency, - b.order_num + b.order_num, + b.remark from emis_waybill a left join emis_settle_sub_bill_feeitem b on a.bill_code = b.bill_code and b.del_flag = '0' left join emis_site seaway1 on a.departure_port=seaway1.site_code and seaway1.del_flag='0' From e332b01163c74191c9e0fcbbc2f9bb0b117679c0 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 12 Dec 2025 13:35:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?demand:=20=20=20=20=E5=88=86=E6=89=B9?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisTmsSiteBatchDtlServiceImpl.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java index 6e028d112..01083420f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchDtlServiceImpl.java @@ -234,22 +234,22 @@ public class EmisTmsSiteBatchDtlServiceImpl implements IEmisTmsSiteBatchDtlServi boolean hasMatchingSupplier = existingBatches.stream() .anyMatch(batch -> supplierCodeList.contains(batch.getSupplierCode())); - if (hasMatchingSupplier) { - // 找到匹配的批次,检查重量、体积、件数是否一致 - EmisTmsSiteBatch matchingBatch = existingBatches.stream() - .filter(batch -> supplierCodeList.contains(batch.getSupplierCode())) - .findFirst() - .orElse(null); - if (Objects.nonNull(matchingBatch)) { - result.setBatchParcelQty( - matchingBatch.getTotalParcelQty() != null ? matchingBatch.getTotalParcelQty() : 0); - result.setBatchWeight( - matchingBatch.getTotalWeight() != null ? matchingBatch.getTotalWeight() : BigDecimal.ZERO); - result.setBatchVolume( - matchingBatch.getTotalVolume() != null ? matchingBatch.getTotalVolume() : BigDecimal.ZERO); - return result; - } - } +// if (hasMatchingSupplier) { +// // 找到匹配的批次,检查重量、体积、件数是否一致 +// EmisTmsSiteBatch matchingBatch = existingBatches.stream() +// .filter(batch -> supplierCodeList.contains(batch.getSupplierCode())) +// .findFirst() +// .orElse(null); +// if (Objects.nonNull(matchingBatch)) { +// result.setBatchParcelQty( +// matchingBatch.getTotalParcelQty() != null ? matchingBatch.getTotalParcelQty() : 0); +// result.setBatchWeight( +// matchingBatch.getTotalWeight() != null ? matchingBatch.getTotalWeight() : BigDecimal.ZERO); +// result.setBatchVolume( +// matchingBatch.getTotalVolume() != null ? matchingBatch.getTotalVolume() : BigDecimal.ZERO); +// return result; +// } +// } } // 先过滤出包含多个供应商编码的rules