From a6f3454a486d3d4275cc31fba1b50d689466f927 Mon Sep 17 00:00:00 2001
From: aike <17730485278@139.com>
Date: Wed, 2 Apr 2025 17:21:19 +0800
Subject: [PATCH 1/7] =?UTF-8?q?demand:=20=E6=96=B0=E5=A2=9E=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5=EF=BC=9A=E6=8F=90=E5=8D=95=E5=8F=B7=EF=BC=88=E8=AE=B0?=
=?UTF-8?q?=E5=BD=95=E6=B5=B7=E8=BF=90=E6=8F=90=E5=8D=95=E4=BF=A1=E6=81=AF?=
=?UTF-8?q?=EF=BC=89=E3=80=81=E8=B4=B5=E5=8F=B8=E7=BC=96=E5=8F=B7=EF=BC=88?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=9B=B8=E5=85=B3=E4=B8=9A=E5=8A=A1=E7=9A=84?=
=?UTF-8?q?=E8=B4=B5=E5=8F=B8=E7=BC=96=E5=8F=B7=EF=BC=89=E3=80=81=E8=B5=B7?=
=?UTF-8?q?=E8=BF=90=E6=B8=AF=EF=BC=88=E5=85=B3=E8=81=94=E7=BD=91=E7=82=B9?=
=?UTF-8?q?=E8=A1=A8=EF=BC=89=E3=80=81=E7=9B=AE=E7=9A=84=E6=B8=AF=EF=BC=88?=
=?UTF-8?q?=E5=85=B3=E8=81=94=E7=BD=91=E7=82=B9=E8=A1=A8=EF=BC=89=E3=80=81?=
=?UTF-8?q?=E7=AE=B1=E9=87=8F=E3=80=82=E5=8A=A0=E5=9C=A8=E8=BF=90=E5=8D=95?=
=?UTF-8?q?=E5=BD=95=E5=85=A5=E7=95=8C=E9=9D=A2=E3=80=82=20committer:=20he?=
=?UTF-8?q?yu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../xdadan/erp/emis/domain/EmisWaybill.java | 19 +++++++++++++
.../erp/emis/domain/vo/WaybillOrder.java | 27 +++++++++++++++++++
.../resources/mapper/EmisWaybillMapper.xml | 15 +++++++++++
3 files changed, 61 insertions(+)
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
index b8187a940..9197fad63 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
@@ -680,5 +680,24 @@ public class EmisWaybill extends BaseEntity
@TableField(exist = false)
private String transType;
+ @TableField
+ @DataAuditField(fieldComment = "提单号(记录海运提单信息)")
+ private String ladingBillCode ;
+
+ @TableField
+ @DataAuditField(fieldComment = "贵司编号(记录相关业务的贵司编号)")
+ private String companyCode ;
+
+ @TableField
+ @DataAuditField(fieldComment = "起运港")
+ private String departurePort ;
+
+ @TableField
+ @DataAuditField(fieldComment = "目的港")
+ private String destinationPort;
+
+ @TableField
+ @DataAuditField(fieldComment = "箱量")
+ private String boxQuantity;
}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java
index c25184891..671095a0f 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/vo/WaybillOrder.java
@@ -367,6 +367,21 @@ public class WaybillOrder implements Serializable {
/* 录单人 */
private String registerManName;
+ /* 提单号(记录海运提单信息) */
+ private String ladingBillCode ;
+
+ /* 贵司编号(记录相关业务的贵司编号) */
+ private String companyCode ;
+
+ /* 起运港 */
+ private String departurePort ;
+
+ /* 目的港 */
+ private String destinationPort;
+
+ /* 箱量 */
+ private String boxQuantity;
+
// 销售,回款
// private String salesmenName;
// private String payeeName;
@@ -661,6 +676,12 @@ public class WaybillOrder implements Serializable {
voItem.setOrderRemark(dbWaybill.getOrderRemark());
+ voItem.setLadingBillCode(dbWaybill.getLadingBillCode());
+ voItem.setCompanyCode(dbWaybill.getCompanyCode());
+ voItem.setDeparturePort(dbWaybill.getDeparturePort());
+ voItem.setDestinationPort(dbWaybill.getDestinationPort());
+ voItem.setBoxQuantity(dbWaybill.getBoxQuantity());
+
return voItem;
}
@@ -880,6 +901,12 @@ public class WaybillOrder implements Serializable {
dbWaybill.setOrderRemark(this.getOrderRemark());
dbWaybill.setExtInfo(this.getExtInfo());
+ dbWaybill.setLadingBillCode(this.getLadingBillCode());
+ dbWaybill.setCompanyCode(this.getCompanyCode());
+ dbWaybill.setDeparturePort(this.getDeparturePort());
+ dbWaybill.setDestinationPort(this.getDestinationPort());
+ dbWaybill.setBoxQuantity(this.getBoxQuantity());
+
return dbWaybill;
}
diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
index 13334584e..aa585f057 100644
--- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
@@ -2440,6 +2440,11 @@
update_time,
create_site,
update_site,
+ lading_bill_code ,
+ company_code ,
+ departure_port ,
+ destination_port ,
+ box_quantity ,
#{orderSn},
@@ -2619,6 +2624,11 @@
#{updateTime},
#{createSite},
#{updateSite},
+ #{ladingBillCode},
+ #{companyCode},
+ #{departurePort},
+ #{destinationPort},
+ #{boxQuantity},
@@ -2800,6 +2810,11 @@
update_time = #{updateTime},
create_site = #{createSite},
update_site = #{updateSite},
+ lading_bill_code = #{ladingBillCode},
+ company_code = #{companyCode},
+ departure_port = #{departurePort},
+ destination_port = #{destinationPort},
+ box_quantity = #{boxQuantity},
where id = #{id}
From 6a9780369c4b0ea102c28070b5c6981e2df08c5e Mon Sep 17 00:00:00 2001
From: aike <17730485278@139.com>
Date: Wed, 9 Apr 2025 13:46:15 +0800
Subject: [PATCH 2/7] =?UTF-8?q?demand:=20=E8=B4=A6=E5=8D=95=E5=AF=BC?=
=?UTF-8?q?=E5=87=BA=EF=BC=9A=E5=9C=A8=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E4=B8=AD=EF=BC=8C=E5=BD=93?=
=?UTF-8?q?=E9=80=89=E6=8B=A9=E6=B5=B7=E8=BF=90=E7=9B=B8=E5=85=B3=E8=BF=90?=
=?UTF-8?q?=E5=8D=95=E6=97=B6=EF=BC=8C=E7=B3=BB=E7=BB=9F=E8=A6=81=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E4=B8=8A=E8=BF=B0=E6=A8=A1=E7=89=88=E5=AF=BC=E5=87=BA?=
=?UTF-8?q?=EF=BC=8C=E5=AF=BC=E5=87=BA=E7=9A=84=E8=B4=A6=E5=8D=95=E8=A1=A8?=
=?UTF-8?q?=E6=A0=BC=E8=A6=81=E5=8C=85=E5=90=AB=E6=8F=90=E5=8D=95=E5=8F=B7?=
=?UTF-8?q?=E3=80=81=E9=9D=A2=E5=8D=95=E5=8F=B7=E3=80=81=E8=B4=B5=E5=8F=B8?=
=?UTF-8?q?=E7=BC=96=E5=8F=B7=EF=BC=88=E5=A6=82=E6=B2=A1=E6=9C=89=E5=A1=AB?=
=?UTF-8?q?=EF=BC=8C=E8=BE=93=E5=87=BA=E4=B8=BA=E7=A9=BA=EF=BC=89=E3=80=81?=
=?UTF-8?q?=E8=B5=B7=E8=BF=90=E6=B8=AF=E3=80=81=E7=9B=AE=E7=9A=84=E6=B8=AF?=
=?UTF-8?q?=E3=80=81=E7=AE=B1=E9=87=8F=E3=80=81=E4=BB=B6=E6=95=B0=E3=80=81?=
=?UTF-8?q?=E6=AF=9B=E9=87=8D=E3=80=81=E4=BD=93=E7=A7=AF=E3=80=81=E8=B4=B9?=
=?UTF-8?q?=E7=94=A8=E5=90=8D=E7=A7=B0=E3=80=81=E5=B8=81=E7=A7=8D=E3=80=81?=
=?UTF-8?q?=E9=87=91=E9=A2=9D=20committer:=20heyu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../web/emis/EmisSettleBillController.java | 34 +--
.../emis/domain/EmisWaybillAndFeeitem.java | 85 ++++++
.../EmisSettleSubBillFeeitemMapper.java | 6 +
.../emis/service/IEmisSettleBillService.java | 4 +
.../excelCellStrategy/CellStyleStrategy.java | 94 +++++++
.../impl/EmisSettleBillServiceImpl.java | 247 +++++++++++++++++-
.../mapper/EmisSettleSubBillFeeitemMapper.xml | 51 ++++
7 files changed, 505 insertions(+), 16 deletions(-)
create mode 100644 emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillAndFeeitem.java
create mode 100644 emis-biz/src/main/java/com/xdadan/erp/emis/service/excelCellStrategy/CellStyleStrategy.java
diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java
index dbd26a76d..b97ab5fdb 100644
--- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java
+++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisSettleBillController.java
@@ -17,9 +17,11 @@ import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
+import java.util.stream.Collectors;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.excel.EasyExcel;
@@ -27,29 +29,26 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.util.MapUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.beust.jcommander.internal.Lists;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.DictUtils;
-import com.xdadan.erp.emis.domain.EmisExchangeRate;
-import com.xdadan.erp.emis.domain.EmisSettleSubBill;
-import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
+import com.xdadan.erp.emis.domain.*;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
-import com.xdadan.erp.emis.domain.vo.scan.ScanResult;
-import com.xdadan.erp.emis.service.EmisBaseService;
-import com.xdadan.erp.emis.service.IEmisExchangeRateService;
-import com.xdadan.erp.emis.service.IEmisSettleBillPayLogService;
-import com.xdadan.erp.emis.service.billexport.ExcelUtils;
-import com.xdadan.erp.emis.service.billexport.MapObjectUtil;
+import com.xdadan.erp.emis.mapper.EmisSettleSubBillFeeitemMapper;
+import com.xdadan.erp.emis.service.*;
+import com.xdadan.erp.emis.service.test.CustomCellWriteHandler;
import com.xdadan.erp.emis.utils.WaybillHelper;
-import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
@@ -67,9 +66,7 @@ import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.page.TableDataInfo;
import com.xdadan.erp.common.enums.BusinessType;
import com.xdadan.erp.common.utils.poi.ExcelUtil;
-
-import com.xdadan.erp.emis.domain.EmisSettleBill;
-import com.xdadan.erp.emis.service.IEmisSettleBillService;
+import org.apache.poi.ss.usermodel.*;
/**
* 结算总账单Controller
@@ -511,6 +508,13 @@ public class EmisSettleBillController extends BaseController
return AjaxResult.success("确认成功");
}
+ @Log(title = "导出海运账单", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportSeaWayBill")
+ public void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill) {
+
+ emisSettleBillService.exportSeaWayBill(response, emisSettleBill);
+ }
+
@Log(title = "导出账单", businessType = BusinessType.EXPORT)
@PostMapping("/exportBill")
public void exportBill(HttpServletResponse response, EmisSettleBill emisSettleBill)
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillAndFeeitem.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillAndFeeitem.java
new file mode 100644
index 000000000..7a6132aaf
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybillAndFeeitem.java
@@ -0,0 +1,85 @@
+/**
+ * @Project: emis
+ * @Title: EmisWaybill.java
+ * @author linfso
+ * @date 2024-04-11 05:48:01
+ * @Copyright: ShangHai Duta 2022 All rights reserved.
+ * @version v1.0
+ * @Description:
运单列表 实体类
+ */
+
+package com.xdadan.erp.emis.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xdadan.erp.common.annotation.audit.DataAuditField;
+import com.xdadan.erp.common.annotation.audit.DataAuditTable;
+import com.xdadan.erp.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * @ClassName EmisWaybillAndFeeitem
+ * @Description 运单列表
+ * @author heyu
+ * @date 2025-04-03 11:48:01
+ */
+@Data
+@TableName("emis_waybill")
+@DataAuditTable(tableName = "emis_waybill",tableComment = "运单列表")
+public class EmisWaybillAndFeeitem extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+
+ private String uuid;
+
+ @TableField
+ @DataAuditField(fieldComment = "探路者面单号")
+ private String billCode ;
+
+ @TableField
+ @DataAuditField(fieldComment = "提单号(记录海运提单信息)")
+ private String ladingBillCode ;
+
+ @TableField
+ @DataAuditField(fieldComment = "贵司编号(记录相关业务的贵司编号)")
+ private String companyCode ;
+
+ @TableField
+ @DataAuditField(fieldComment = "起运港")
+ private String departurePort ;
+
+ @TableField
+ @DataAuditField(fieldComment = "目的港")
+ private String destinationPort;
+
+ @TableField
+ @DataAuditField(fieldComment = "箱量")
+ private String boxQuantity;
+
+ @TableField
+ @DataAuditField(fieldComment = "件数")
+ private Integer parcelQty;
+
+ @TableField
+ @DataAuditField(fieldComment = "毛重")
+ private BigDecimal billWeight;
+
+ @TableField
+ @DataAuditField(fieldComment = "体积")
+ private BigDecimal totalVolume;
+
+ // 子账单费用明细信息
+ @TableField(exist = false)
+ private List settleSubBillFeeitemList;
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillFeeitemMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillFeeitemMapper.java
index 594369447..5c97dac16 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillFeeitemMapper.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillFeeitemMapper.java
@@ -13,6 +13,10 @@ package com.xdadan.erp.emis.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
+import com.xdadan.erp.emis.domain.EmisWaybill;
+import com.xdadan.erp.emis.domain.EmisWaybillAndFeeitem;
+import org.apache.ibatis.annotations.Param;
+
/**
* @ClassName EmisSettleSubBillFeeitemMapper
* @Description 子账单费用明细 Mapper 接口
@@ -80,4 +84,6 @@ public interface EmisSettleSubBillFeeitemMapper extends BaseMapper selectEmisWaybillListByBillCodeList(@Param("billCodeList") List billCodeList);
}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java
index be1f117b4..6ad7e1af4 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettleBillService.java
@@ -17,6 +17,8 @@ import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
+import javax.servlet.http.HttpServletResponse;
+
/**
* @ClassName EmisSettleBillService
* @Description 结算总账单
@@ -123,4 +125,6 @@ public interface IEmisSettleBillService extends IDataAuditService
* @return
*/
public int reCalcSettleBillPayStatus(String settleBillNo);
+
+ void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill);
}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/excelCellStrategy/CellStyleStrategy.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/excelCellStrategy/CellStyleStrategy.java
new file mode 100644
index 000000000..4155bcab4
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/excelCellStrategy/CellStyleStrategy.java
@@ -0,0 +1,94 @@
+package com.xdadan.erp.emis.service.excelCellStrategy;
+
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import org.apache.poi.ss.usermodel.*;
+
+/**
+ * @author heyu
+ * @ClassName CellStyleStrategy.java
+ * @Description CellStyleStrategy
+ * @createTime 2025年04月09日
+ */
+public class CellStyleStrategy extends HorizontalCellStyleStrategy {
+
+
+ private final WriteCellStyle headWriteCellStyle;
+
+ public CellStyleStrategy(WriteCellStyle headWriteCellStyle) {
+ this.headWriteCellStyle = headWriteCellStyle;
+ }
+
+ @Override
+ protected void setHeadCellStyle(CellWriteHandlerContext context) {
+
+ context.getWriteSheetHolder().getSheet().setColumnWidth(0, (int) (15.88 * 256));
+ context.getWriteSheetHolder().getSheet().setColumnWidth(1, (int) (20.5 * 256));
+ context.getWriteSheetHolder().getSheet().setColumnWidth(2, (int) (10 * 256));
+ context.getWriteSheetHolder().getSheet().setColumnWidth(3, (int) (12.5 * 256));
+ context.getWriteSheetHolder().getSheet().setColumnWidth(4, (int) (18.75 * 256));
+// context.getWriteSheetHolder().getSheet().addMergedRegion(new CellRangeAddress(2,2,0,8));
+// context.getWriteSheetHolder().getSheet().addMergedRegion(new CellRangeAddress(2,2,9,11));
+ // 根据行索引为不同级别的表头应用不同样式
+ if (context.getRowIndex() == 0) {
+ setRowStyle(context, (short) (27.75 * 20), (short) 14, IndexedColors.BLACK.getIndex(), false,IndexedColors.WHITE.getIndex());
+ } else if (context.getRowIndex() > 0 && context.getRowIndex() < 3) {
+ setRowStyle(context, (short) (27.75 * 20), (short) 12, IndexedColors.RED.getIndex(), true,IndexedColors.WHITE.getIndex());
+ if (context.getCell().getStringCellValue().contains("出账日期")) {
+ context.getRow().setHeight((short) (32 * 20));
+ }
+ } else if (context.getRow().getCell(0).getStringCellValue().contains("总计")) {
+ headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
+ setRowStyle(context, (short) (23 * 20), (short) 8, IndexedColors.RED.getIndex(), true,IndexedColors.WHITE.getIndex());
+ } else if (context.getRow().getCell(0).getStringCellValue().contains("小计")) {
+ headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
+ setRowStyle(context, (short) (23 * 20), (short) 8, IndexedColors.BLACK.getIndex(), false,IndexedColors.WHITE.getIndex());
+ } else {
+ headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+ setRowStyle(context, (short) (23 * 20), (short) 10, IndexedColors.BLACK.getIndex(), true,IndexedColors.YELLOW.getIndex());
+// Workbook workbook = context.getWriteContext().getWorkbook();
+// CellStyle cellStyle = workbook.createCellStyle();
+// Font cellFont = workbook.createFont();
+// cellFont.setBold(false);
+// cellStyle.setFont(cellFont);
+// Cell cell = context.getCell();
+// if("贵司编号".equals(cell.getStringCellValue())){
+// cellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex());
+// cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+// cell.setCellStyle(cellStyle);
+// }else {
+// cellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
+// cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+// cell.setCellStyle(cellStyle);
+// }
+
+ }
+
+ if (stopProcessing(context)) {
+ return;
+ }
+ WriteCellData> cellData = context.getFirstCellData();
+ WriteCellStyle.merge(this.headWriteCellStyle, cellData.getOrCreateStyle());
+ }
+
+ protected void setContentCellStyle(CellWriteHandlerContext context) {
+ context.getRow().setHeight((short) (23 * 20));
+ }
+
+ private void setRowStyle(CellWriteHandlerContext context, short height, short fontSize, short fontColor, boolean isBold, short backgroundColor) {
+ context.getRow().setHeight(height);
+ // 背景色
+ headWriteCellStyle.setFillForegroundColor(backgroundColor);
+ // 创建字体实例
+ WriteFont cellWriteFont = new WriteFont();
+ // 设置字体大小
+ cellWriteFont.setFontName("微软雅黑");
+ cellWriteFont.setFontHeightInPoints(fontSize);
+ cellWriteFont.setColor(fontColor);
+ cellWriteFont.setBold(isBold);
+ headWriteCellStyle.setWriteFont(cellWriteFont);
+ }
+}
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 11f5f606a..ccecb7339 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
@@ -11,10 +11,22 @@
package com.xdadan.erp.emis.service.impl;
import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.*;
+import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
-import com.xdadan.erp.common.core.domain.AjaxResult;
+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.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.WriteTable;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import com.beust.jcommander.internal.Lists;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.StringUtils;
import com.xdadan.erp.emis.domain.*;
@@ -25,15 +37,24 @@ import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
import com.xdadan.erp.emis.mapper.*;
import com.xdadan.erp.emis.service.EmisBaseService;
+import com.xdadan.erp.emis.service.excelCellStrategy.CellStyleStrategy;
+import com.xdadan.erp.emis.service.test.CustomCellWriteHandler;
import com.xdadan.erp.emis.utils.WaybillHelper;
import lombok.extern.slf4j.Slf4j;
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.IndexedColors;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import org.springframework.transaction.annotation.Transactional;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
/**
* 结算总账单Service业务层处理
*
@@ -60,6 +81,12 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
@Autowired
private EmisSettlePayRelMapper emisSettlePayRelMapper;
+ @Autowired
+ private EmisBaseService emisBaseService;
+
+ @Autowired
+ private EmisSettleSubBillFeeitemMapper emisSettleSubBillFeeitemMapper;
+
/**
* 获取稽核数据
* @param id
@@ -807,6 +834,224 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
return 1;
}
+ @Override
+ public void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill) {
+ try {
+ log.info("cd exportSeaWayBill , emisSettleBill,{}", emisSettleBill);
+
+ Map textMap = new HashMap<>();
+
+ // 总账单
+ EmisSettleBill bill = emisBaseService.getSettleBillBySettleBillNo(emisSettleBill.getSettleBillNo());
+
+ // 子账单
+ List list = emisBaseService.selectSubBillListBySettleBillNo(emisSettleBill.getSettleBillNo());
+
+ // 运单号
+ List billCodeList = list.stream()
+ .map(EmisSettleSubBill::getBillCode)
+ .collect(Collectors.toList());
+ if (org.springframework.util.CollectionUtils.isEmpty(list) || org.springframework.util.CollectionUtils.isEmpty(billCodeList)) {
+ return;
+ }
+
+ // 根据运单号查询运单详情
+ List emisWaybills = emisSettleSubBillFeeitemMapper.selectEmisWaybillListByBillCodeList(billCodeList);
+ Map emisWaybillMap = emisWaybills.stream().collect(Collectors.toMap(EmisWaybillAndFeeitem::getBillCode, i -> i));
+ if (MapUtil.isEmpty(emisWaybillMap) || org.springframework.util.CollectionUtils.isEmpty(emisWaybills)) {
+ return;
+ }
+ log.info("select emisWaybills is success, emisWaybills,{}", emisWaybills);
+
+ // 运单费用条目
+ List emisWaybillFeeitemList = new ArrayList<>();
+ emisWaybills.forEach(emisWaybill -> {
+ if (Objects.nonNull(emisWaybill) && CollectionUtil.isNotEmpty(emisWaybill.getSettleSubBillFeeitemList())) {
+ emisWaybillFeeitemList.addAll(emisWaybill.getSettleSubBillFeeitemList());
+ }
+ });
+ calculateTotal(emisWaybillFeeitemList, textMap);
+ log.info("get textMap is success, textMap,{}", textMap);
+
+ // 出账日期
+ String date = DateUtils.parseDateToStr("yyyy.M.dd", list.get(0).getBillDate());
+ String year = DateUtils.parseDateToStr("yyyy", list.get(0).getBillDate());
+ String month = DateUtils.parseDateToStr("M", list.get(0).getBillDate());
+
+// String filePath = "D:\\log\\stduent_01.xlsx";
+ ServletOutputStream outputStream = response.getOutputStream();
+
+ //内容的策略
+ WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+ contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+ WriteFont contentWriteFont = new WriteFont();
+ contentWriteFont.setFontName("微软雅黑");
+ contentWriteFont.setFontHeightInPoints((short) 8);
+ contentWriteCellStyle.setWriteFont(contentWriteFont);
+
+ ExcelWriter excelWriter = EasyExcel.write(outputStream).excelType(ExcelTypeEnum.XLSX).build();
+ List> contentHeader = this.buildHeader();
+ HorizontalCellStyleStrategy horizontalCellStyleStrategy =
+ new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
+ // 构建大表头
+ WriteSheet writeSheet1 = EasyExcel.writerSheet("sheet").needHead(Boolean.FALSE)
+ .registerWriteHandler(horizontalCellStyleStrategy)
+ .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();
+ 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();
+ excelWriter.write((Collection>) null, writeSheet1, t2);
+
+ List> header3 = contentHeader.stream().map(item -> Collections.singletonList("结算对象:探路供应链公司")).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();
+ 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;
+ for (int i = 0; i < excelKey.size(); i++) {
+ List> result = new ArrayList<>();
+ Map subtotalMap = new HashMap<>();
+
+ EmisWaybillAndFeeitem emisWaybill = emisWaybillMap.get(excelKey.get(i));
+ List settleSubBillFeeitemList = emisWaybill.getSettleSubBillFeeitemList();
+ calculateSubtotal(settleSubBillFeeitemList, subtotalMap);
+ settleSubBillFeeitemList.forEach(item -> {
+ result.add(Lists.newArrayList(emisWaybill.getLadingBillCode(), emisWaybill.getBillCode(), emisWaybill.getCompanyCode(), emisWaybill.getDeparturePort(),
+ emisWaybill.getDestinationPort(), emisWaybill.getBoxQuantity(), String.valueOf(emisWaybill.getParcelQty()),
+ emisWaybill.getBillWeight().stripTrailingZeros().toPlainString(),
+ emisWaybill.getTotalVolume().stripTrailingZeros().toPlainString(),
+ item.getFeeName(), item.getCurrency(), item.getBillFee().stripTrailingZeros().toPlainString()
+ ));
+ });
+ // 小表头
+ WriteSheet sheet = EasyExcel.writerSheet("sheet")
+ .needHead(Boolean.FALSE)
+ .registerWriteHandler(new CustomCellWriteHandler()).build();
+ WriteTable writeTable0 = EasyExcel.writerTable(num).head(contentHeader).build();
+ excelWriter.write((Collection>) null, sheet, writeTable0);
+
+ // 行数据
+ WriteTable writeTable1 = EasyExcel.writerTable(num + 1).needHead(Boolean.TRUE).head(contentHeader).build();
+ excelWriter.write(result, writeSheet1, writeTable1);
+
+ log.info("Building the first row is success");
+
+ // 小计
+ List> nameHeader2 = contentHeader.stream().map(item -> Collections.singletonList("小计: USD金额:" + subtotalMap.get("usdSubtotal") + " CNY金额:" + subtotalMap.get("cnySubtotal"))).collect(Collectors.toList());
+ WriteTable writeTable2 = EasyExcel.writerTable(num + 2).needHead(Boolean.TRUE).head(nameHeader2).build();
+ excelWriter.write((Collection>) null, writeSheet1, writeTable2);
+ num = num + 2;
+ }
+ // 总计
+ List> nameHeader3 = contentHeader.stream().map(item -> Collections.singletonList("总计: USD金额:" + textMap.get("usdTotal") + " CNY金额:" + textMap.get("cnyTotal"))).collect(Collectors.toList());
+ WriteTable writeTable3 = EasyExcel.writerTable(num + 1).needHead(Boolean.TRUE).head(nameHeader3).build();
+ excelWriter.write((Collection>) null, writeSheet1, writeTable3);
+
+ log.info("exportSeaWayBill is success");
+
+ // 设置响应头信息
+ String fileName = bill.getSettleBillName() + "_海运账单.xlsx";
+ response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()));
+ response.setContentType("application/octet-stream");
+ //关流
+ excelWriter.finish();
+ IOUtils.closeQuietly(outputStream);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public List> buildHeader() {
+ List> header = new ArrayList<>();
+ header.add(Collections.singletonList("提单号"));
+ header.add(Collections.singletonList("探路者面单号"));
+ header.add(Collections.singletonList("贵司编号"));
+ header.add(Collections.singletonList("起运港"));
+ header.add(Collections.singletonList("目的港"));
+ header.add(Collections.singletonList("箱量"));
+ header.add(Collections.singletonList("件数"));
+ header.add(Collections.singletonList("毛重"));
+ header.add(Collections.singletonList("体积"));
+ header.add(Collections.singletonList("费用名称"));
+ header.add(Collections.singletonList("币种"));
+ header.add(Collections.singletonList("金额"));
+ return header;
+ }
+
+
+
+ private static void calculateTotal(List emisWaybillFeeitemList, Map textMap) {
+ Map> emisWaybillFeeitemMap = emisWaybillFeeitemList.stream()
+ .collect(Collectors.groupingBy(EmisSettleSubBillFeeitem::getCurrency));
+
+ if (MapUtil.isNotEmpty(emisWaybillFeeitemMap)) {
+ Set keySet = emisWaybillFeeitemMap.keySet();
+ keySet.forEach(key -> {
+ // 计算每种金额总计
+ String count = emisWaybillFeeitemMap.get(key).stream()
+ .map(EmisSettleSubBillFeeitem::getBillFee)
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
+ .stripTrailingZeros()
+ .toPlainString();
+ if (keySet.size() > 1) {
+ countA(key, textMap, "usdTotal", count, "cnyTotal");
+ } else {
+ countB(key, textMap, "usdTotal", count, "cnyTotal");
+ }
+ });
+ }
+ }
+
+ private static void calculateSubtotal(List emisWaybillFeeitemList, Map textMap) {
+ Map> emisWaybillFeeitemMap = emisWaybillFeeitemList.stream()
+ .collect(Collectors.groupingBy(EmisSettleSubBillFeeitem::getCurrency));
+
+ if (MapUtil.isNotEmpty(emisWaybillFeeitemMap)) {
+ Set keySet = emisWaybillFeeitemMap.keySet();
+ keySet.forEach(key -> {
+ // 计算每种金额总计
+ String count = emisWaybillFeeitemMap.get(key).stream()
+ .map(EmisSettleSubBillFeeitem::getBillFee)
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
+ .stripTrailingZeros()
+ .toPlainString();
+ if (keySet.size() > 1) {
+ countA(key, textMap, "usdSubtotal", count, "cnySubtotal");
+ } else {
+ countB(key, textMap, "usdSubtotal", count, "cnySubtotal");
+ }
+ });
+ }
+ }
+
+ private static void countA(String key, Map textMap, String usdSubtotal, String count, String cnySubtotal) {
+ if ("USD".equals(key)) {
+ textMap.put(usdSubtotal, count);
+ } else {
+ textMap.put(cnySubtotal, count);
+ }
+ }
+
+ private static void countB(String key, Map textMap, String usdSubtotal, String count, String cnySubtotal) {
+ if ("USD".equals(key)) {
+ textMap.put(usdSubtotal, count);
+ textMap.put(cnySubtotal, "0");
+ } else {
+ textMap.put(cnySubtotal, count);
+ textMap.put(usdSubtotal, "0");
+ }
+ }
+
/**
* 修改结算总账单
diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml
index 12881077d..7e5988a6b 100644
--- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillFeeitemMapper.xml
@@ -16,10 +16,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
select id, sub_bill_no, bill_code, fee_code, fee_name, bill_fee, orig_fee, currency, order_num, del_flag, create_by, create_time, update_by, update_time, remark from emis_settle_sub_bill_feeitem
+
+ select a.bill_code,
+ a.lading_bill_code,
+ a.company_code,
+ a.departure_port,
+ a.destination_port,
+ a.box_quantity,
+ a.parcel_qty,
+ a.bill_weight,
+ a.total_volume,
+ b.*
+ from emis_waybill a
+ left join emis_settle_sub_bill_feeitem b on a.bill_code = b.bill_code and b.del_flag = '0'
+
+
+
+
+
insert into emis_settle_sub_bill_feeitem
From 519cfbaf9666b1ac4191f620c75f935dc20d0a18 Mon Sep 17 00:00:00 2001
From: aike <17730485278@139.com>
Date: Wed, 9 Apr 2025 17:33:03 +0800
Subject: [PATCH 3/7] =?UTF-8?q?demand:=20=E6=96=B0=E5=A2=9E=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5=E9=9C=80=E8=A6=81=E5=B1=95=E7=8E=B0=E5=9C=A8=E5=AF=84?=
=?UTF-8?q?=E4=BB=B6=E8=BF=90=E5=8D=95=E6=9F=A5=E8=AF=A2=E3=80=81=E6=B4=BE?=
=?UTF-8?q?=E4=BB=B6=E8=BF=90=E5=8D=95=E6=9F=A5=E8=AF=A2=E3=80=81=E8=BF=90?=
=?UTF-8?q?=E5=8D=95=E4=BF=AE=E6=94=B9=E3=80=81=E5=BF=AB=E4=BB=B6=E8=B7=9F?=
=?UTF-8?q?=E8=B8=AA=EF=BC=88=E8=BF=90=E5=8D=95=E4=BF=A1=E6=81=AF=EF=BC=89?=
=?UTF-8?q?=E3=80=81=E7=BD=91=E7=82=B9=E8=B4=B9=E7=94=A8=E7=94=B3=E8=AF=B7?=
=?UTF-8?q?=E3=80=81=E8=B4=A2=E5=8A=A1=E4=B8=AD=E5=BF=83=E8=B4=B9=E7=94=A8?=
=?UTF-8?q?=E5=AE=A1=E6=A0=B8=E3=80=81=E4=B8=9A=E5=8A=A1=E5=87=BA=E8=B4=A6?=
=?UTF-8?q?=E7=A1=AE=E8=AE=A4=E3=80=81=E4=B8=9A=E5=8A=A1=E8=B4=A6=E5=8D=95?=
=?UTF-8?q?=E7=A1=AE=E8=AE=A4=E3=80=81=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E3=80=82=20committer:=20heyu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/resources/mapper/EmisSettleSubBillMapper.xml | 1 +
emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml | 9 +++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
index 542bf5a27..0d6260a94 100644
--- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
@@ -117,6 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.send_name,a.parcel_qty,a.bill_weight,a.total_volume,a.volume_weight,a.settlement_weight,
a.freight,real_fee,a.fee_remark,a.payment_type,a.remark,
a.payee,a.salesmen,a.bl_is_question,a.problem_cause,
+ a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
j.prod_name as product_type_name,
k.line_name as trans_line_type_name,
diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
index aa585f057..9f0cba0ea 100644
--- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml
@@ -171,6 +171,11 @@
+
+
+
+
+
@@ -300,7 +305,7 @@
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
a.remark, a.del_flag, a.create_by,
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
- a.cod_fee_desc,
+ a.cod_fee_desc, a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
b.name as receive_country_name,c.name as send_country_name,
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
@@ -396,7 +401,7 @@
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
a.remark, a.del_flag, a.create_by,
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
- a.cod_fee_desc,
+ a.cod_fee_desc, a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
b.name as receive_country_name,c.name as send_country_name,
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
From 92438e9d16d143c1609abf64b7f69dda4c2213af Mon Sep 17 00:00:00 2001
From: aike <17730485278@139.com>
Date: Fri, 11 Apr 2025 17:17:19 +0800
Subject: [PATCH 4/7] =?UTF-8?q?demand:=20=E5=B7=B2=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E9=A2=9D=E5=BA=A6=E7=BB=86=E5=88=86=E4=B8=A4=E4=B8=AA=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5=EF=BC=8C=E4=B8=80=E4=B8=AA=E6=98=AF=E8=B6=85=E6=9C=9F?=
=?UTF-8?q?=E9=A2=9D=E5=BA=A6=EF=BC=8C=E4=B8=80=E4=B8=AA=E8=B4=A6=E6=9C=9F?=
=?UTF-8?q?=E5=86=85=E9=A2=9D=E5=BA=A6=E3=80=82=E5=8F=8C=E5=87=BB=E9=9C=80?=
=?UTF-8?q?=E8=A6=81=E6=98=BE=E7=A4=BA=E5=85=B7=E4=BD=93=E6=98=8E=E7=BB=86?=
=?UTF-8?q?=E3=80=82=20committer:=20heyu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../erp/web/emis/EmisWaybillController.java | 8 ++
.../erp/emis/domain/EmisCreditSalesmen.java | 4 +
.../xdadan/erp/emis/domain/EmisWaybill.java | 3 +
.../emis/mapper/EmisSettleSubBillMapper.java | 1 +
.../erp/emis/service/EmisBaseService.java | 82 ++++++++++++++++++-
.../mapper/EmisCreditSalesmenMapper.xml | 12 ++-
.../mapper/EmisSettleSubBillMapper.xml | 10 ++-
7 files changed, 115 insertions(+), 5 deletions(-)
diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java
index 10ffacc4e..47be17417 100644
--- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java
+++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java
@@ -537,6 +537,14 @@ public class EmisWaybillController extends EmisBaseController
list = emisWaybillService.selectEmisWaybillList(emisWaybill);
}
+ if("1".equals(emisWaybill.getQueryQuotaType())){
+ // 查询超期的运单列表
+ list = emisBaseService.filterOverTermEmisWaybillList(list);
+ }
+ if("2".equals(emisWaybill.getQueryQuotaType())){
+ // 查询未超期的账单列表
+ list = emisBaseService.filterInTermEmisWaybillList(list);
+ }
return getDataTable(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 43eac088a..237f5ede2 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
@@ -43,6 +43,10 @@ public class EmisCreditSalesmen extends BaseEntity
private BigDecimal creditMoney;
/* 使用额度 */
private BigDecimal useMoney;
+ /* 超期额度 */
+ private BigDecimal overTermMoney;
+ /* 账期内额度 */
+ private BigDecimal inTermMoney;
/* 币种 */
private String currency;
/* 运输方式 */
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
index 9197fad63..1f26d2625 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisWaybill.java
@@ -675,6 +675,9 @@ public class EmisWaybill extends BaseEntity
private String customerNickName;
@TableField(exist = false)
private String customerAvatar;
+ // 查询现金客户额度属性; 1:查询超期额度,2:查询账期内额度
+ @TableField(exist = false)
+ private String queryQuotaType;
// transType - 运输类型
@TableField(exist = false)
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java
index ddf15d742..1a8a41202 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisSettleSubBillMapper.java
@@ -156,4 +156,5 @@ public interface EmisSettleSubBillMapper extends BaseMapper
public int deleteEmisSettleSubBillByBillCode(String billCode);
+ List querysSettleSubBillByBillCodeList(@Param("billCodeList") List billCodeList);
}
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 b3674d5bf..909da88f6 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
@@ -44,6 +44,7 @@ package com.xdadan.erp.emis.service;
import java.math.BigDecimal;
import java.util.*;
+ import java.util.stream.Collectors;
/**
* 运单列表Service业务层处理
@@ -1503,7 +1504,18 @@ public class EmisBaseService {
try {
Map useMoneyMap=emisCreditSalesmenMapper.getUseMoneyMap(item);
BigDecimal useMoney = (BigDecimal)useMoneyMap.get("useMoney");
- emisCreditSalesmenMapper.updateUseMoney(item.getId(),useMoney);
+ List emisWaybillList = getEmisWaybills(item);
+ // 账期内金额
+ BigDecimal inTermMoney = getInTermMoney(emisWaybillList);
+ // 超期金额
+ BigDecimal overTermMoney = BigDecimal.valueOf(useMoney.subtract(inTermMoney).stripTrailingZeros().longValue());
+ EmisCreditSalesmen emisCreditSalesmen = new EmisCreditSalesmen();
+ emisCreditSalesmen.setId(item.getId());
+ emisCreditSalesmen.setUseMoney(useMoney);
+ emisCreditSalesmen.setOverTermMoney(overTermMoney);
+ emisCreditSalesmen.setInTermMoney(inTermMoney);
+ emisCreditSalesmenMapper.updateEmisCreditSalesmen(emisCreditSalesmen);
+ log.info("success.autoDoCredit , emisCreditSalesmen,{}", JSON.toJSONString(emisCreditSalesmen));
}catch (Exception ex){
ex.printStackTrace();
}
@@ -1526,6 +1538,74 @@ public class EmisBaseService {
}
}
+ private BigDecimal getInTermMoney(List emisWaybillList) {
+ List inTermList = filterInTermEmisWaybillList(emisWaybillList);
+ List billCodeList = inTermList.stream().map(EmisWaybill::getBillCode).collect(Collectors.toList());
+ log.info("cd getInTermMoney , billCodeList,{}", billCodeList);
+ if (CollectionUtil.isEmpty(billCodeList)) {
+ return BigDecimal.ZERO;
+ }
+ List emisSettleSubBillList = emisSettleSubBillMapper.querysSettleSubBillByBillCodeList(billCodeList);
+ if (CollectionUtil.isEmpty(emisSettleSubBillList)) {
+ return BigDecimal.ZERO;
+ }
+ log.info("query emisSettleSubBillList , emisSettleSubBillList,{}", emisSettleSubBillList);
+ BigDecimal inTermMoney = BigDecimal.valueOf(emisSettleSubBillList.stream()
+ .map(EmisSettleSubBill::getBillFee)
+ .filter(i -> i != null)
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
+ .stripTrailingZeros().longValue());
+ log.info("success.getInTermMoney , inTermMoney,{}", inTermMoney);
+ return inTermMoney;
+ }
+
+ public List filterOverTermEmisWaybillList(List list) {
+ log.info("cd filterOverTermEmisWaybillList , emisWaybillList,{}", list);
+ if (CollectionUtil.isEmpty(list)) {
+ return Collections.emptyList();
+ }
+ List overTermList = list.stream()
+ .filter(item -> item.getOrderDate() != null)
+ .filter(item -> (System.currentTimeMillis() - item.getOrderDate().getTime()) > (10 * 1000 * 60 * 60 * 24))
+ .collect(Collectors.toList());
+ log.info("success.filterOverTermEmisWaybillList , overTermList,{}", overTermList);
+ return overTermList;
+ }
+
+ public List filterInTermEmisWaybillList(List list) {
+ log.info("cd filterInTermEmisWaybillList , emisWaybillList,{}", list);
+ if (CollectionUtil.isEmpty(list)) {
+ return Collections.emptyList();
+ }
+ List overTermList = filterOverTermEmisWaybillList(list);
+ if (CollectionUtil.isEmpty(overTermList)) {
+ return list;
+ }
+ List inTermList = list.stream()
+ .filter(item -> !overTermList.contains(item))
+ .collect(Collectors.toList());
+ log.info("success.filterInTermEmisWaybillList , inTermList,{}", inTermList);
+ return inTermList;
+ }
+
+ private List getEmisWaybills(EmisCreditSalesmen item) {
+ EmisWaybill emisWaybill = new EmisWaybill();
+ emisWaybill.setPaymentType("1,3");
+ emisWaybill.setPayee(item.getSalesmen());
+ emisWaybill.setPaymentStatus("0,2");
+ emisWaybill.getParams().put("problemQueryType", "2");
+ emisWaybill.getParams().put("problemQueryIds", "173,170,151");
+ emisWaybill.getParams().put("queryTabType", "1");
+ emisWaybill.getParams().put("querySendType", "1");
+ emisWaybill.getParams().put("beginSendDate",
+ DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getStartDate()));
+ emisWaybill.getParams().put("endSendDate",
+ DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getEndDate()));
+ emisWaybill.setCarryType(item.getTransType());
+ List emisWaybillList = emisWaybillMapper.selectEmisWaybillList(emisWaybill);
+ return emisWaybillList;
+ }
+
@Transactional
public void redoGenerateBill(String billCode) throws EmisBizError{
diff --git a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
index b8a542438..6dfa6dd9e 100644
--- a/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisCreditSalesmenMapper.xml
@@ -10,6 +10,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
@@ -22,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
@@ -120,6 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
salesmen,
credit_money,
use_money,
+ over_term_money,
+ in_term_Money,
currency,
trans_type,
start_date,
@@ -140,6 +144,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{salesmen},
#{creditMoney},
#{useMoney},
+ #{overTermMoney},
+ #{inTermMoney},
#{currency},
#{transType},
#{startDate},
@@ -162,6 +168,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
credit_money = #{creditMoney},
use_money = #{useMoney},
+ over_term_money = #{overTermMoney},
+ in_term_Money = #{inTermMoney},
currency = #{currency},
trans_type = #{transType},
start_date = #{startDate},
diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
index 0d6260a94..0b2358c6c 100644
--- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml
@@ -627,8 +627,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where a.del_flag='0' and a.bill_code = #{billCode}
-
-
+