From 68965189447210a3637efeacac6253e41edd8c49 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 19 Feb 2025 15:49:30 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=A6=81=E6=B1=82?= =?UTF-8?q?=EF=BC=8C=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E8=AE=BE=E5=A4=87=E5=87=BA=E5=BA=93=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=83=A8=E5=88=86=E8=A1=8C=E5=92=8C=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E8=A1=8C=E5=AF=BC=E5=87=BA=EF=BC=8C=E5=AF=BC=E5=87=BA=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E6=95=B0=E6=8D=AE=20=E6=96=B0=E5=A2=9E=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=89=80=E6=9C=89=E5=92=8C=E9=80=89=E6=8B=A9=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20=E5=AF=BC=E5=87=BA=E5=94=AE=E5=90=8E=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=98=8E=E7=BB=86=E6=96=B9=E6=B3=95=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B9=E6=8D=AE=E5=87=BA=E8=B4=A7=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=9F=A5=E8=AF=A2=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=87=BA=E5=BA=93=E5=8D=95=E9=9B=86=E5=90=88?= =?UTF-8?q?=E6=96=B9=E6=B3=95=20=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4=E8=AE=BE=E5=A4=87=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AftersalesOutOrderController.java | 23 ++- .../domain/vo/ExportAftersalesOutOrderVo.java | 139 ++++++++++++++++++ .../AftersalesOutOrderDetailMapper.java | 5 + .../mapper/AftersalesOutOrderMapper.java | 5 + .../service/IAftersalesOutOrderService.java | 11 ++ .../impl/AftersalesOutOrderServiceImpl.java | 71 +++++++++ .../SysSalesShippingInformDetailMapper.java | 5 + .../AftersalesOutOrderDetailMapper.xml | 8 + .../aftersales/AftersalesOutOrderMapper.xml | 10 +- .../SysSalesShippingInformDetailMapper.xml | 6 + .../aftersalesOutOrder.html | 31 ++++ 11 files changed, 309 insertions(+), 5 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java index 517c7818..29377746 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java @@ -6,8 +6,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; +import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.service.IAftersalesOutOrderDetailService; import com.ruoyi.common.utils.StringUtils; @@ -82,11 +84,24 @@ public class AftersalesOutOrderController extends BaseController @Log(title = "售后维护设备出库", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(AftersalesOutOrder aftersalesOutOrder) + public AjaxResult export(AftersalesOutOrder aftersalesOutOrder,String ids) { - List list = aftersalesOutOrderService.selectAftersalesOutOrderList(aftersalesOutOrder); - ExcelUtil util = new ExcelUtil(AftersalesOutOrder.class); - return util.exportExcel(list, "售后维护设备出库数据"); + if (org.springframework.util.StringUtils.isEmpty(ids)){ + + List list = aftersalesOutOrderService.selectAftersalesOutOrderList(aftersalesOutOrder); + List exportAftersalesOutOrderVos = aftersalesOutOrderService.exportAftersalesOutOrderList(list); + + ExcelUtil util = new ExcelUtil(ExportAftersalesOutOrderVo.class); + return util.exportExcel(exportAftersalesOutOrderVos, "售后维护设备出库数据"); + }else { + String[] outOrderCodes = ids.split(","); + List list = aftersalesOutOrderService.selectAftersalesOutOrderListByCodes(outOrderCodes); + List exportAftersalesOutOrderVos = aftersalesOutOrderService.exportAftersalesOutOrderList(list); + + ExcelUtil util = new ExcelUtil(ExportAftersalesOutOrderVo.class); + return util.exportExcel(exportAftersalesOutOrderVos, "售后维护设备出库数据"); + } + } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java new file mode 100644 index 00000000..664076bc --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java @@ -0,0 +1,139 @@ +package com.ruoyi.aftersales.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** +* 导出售后维护设备出库明细 +* */ +@Data +public class ExportAftersalesOutOrderVo { + + /** 出库单号 */ + @Excel(name = "出库单号") + private String outOrderCode; + + /** 出库状态(0待仓库准备物料、1待售后维护设备1、2待业务确认发货、3待售后维护设备2、4待出库、5部分出库、6全部出库、7已出库、8已取消、9待收货、10待验收、11部分验收、12全部验收、13部分收货、14全部收货) */ + @Excel(name = "出库状态",dictType = "warehouse_out_status") + private String warehouseOutStatus; + + /** 关联订单号(多种订单类型) */ + @Excel(name = "关联订单号") + private String relatedOrderCode; + + /** 关联销售订单编号 */ + private String salesOrderCode; + + /** 出库订单类型(0销售出货单、1生产领料单、2员工领料单、3委外领料单、4退换货单、5开发领料单) */ + @Excel(name = "出库订单类型",dictType = "warehouse_order_type") + private String warehouseOrderType; + + + /** 出库类型(0销售出库、1生产领料、2员工领料、3委外领料、4公司退货出库、5开发领料) */ + @Excel(name = "出库类型",dictType = "warehouse_out_type") + private String warehouseOutType; + + /** 业务人员 */ + @Excel(name = "业务人员") + private String businessName; + + + /** 物料数合计 */ + @Excel(name = "物料数合计") + private Integer materialSum; + + /** 数量合计 */ + @Excel(name = "数量合计") + private Integer enterpriseSum; + + + /** 出库时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date outOrderTime; + + + /** 计划交付时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划交付时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date planDeliveryTime; + + /** 交付条件 */ + @Excel(name = "交付条件") + private String deliveryCondition; + + /** 申请人 */ + @Excel(name = "申请人") + private String applyName; + + /** 收货地址 */ + @Excel(name = "收货地址") + private String deliveryAddress; + + /** 收货联系人 */ + @Excel(name = "收货联系人") + private String deliveryName; + + /** 收货电话 */ + @Excel(name = "收货电话") + private String deliveryNumber; + + + + + /** 料号 */ + @Excel(name = "料号") + private String materialNo; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String materialName; + + + /** 物料品牌 */ + @Excel(name = "物料品牌") + private String materialBrand; + + /** 物料单位 */ + @Excel(name = "物料单位") + private String materialUnit; + + /** 物料描述 */ + @Excel(name = "物料描述") + private String materialDescribe; + + /** 物料加工方式 */ + @Excel(name = "物料加工方式",dictType = "processMethod") + private String materialProcessMethod; + + /** 物料型号 */ + @Excel(name = "物料型号") + private String materialModel; + + +// @Excel(name = "出库货设备Id") +// private String shippingDeviceId; +// +// @Excel(name = "SN号") +// private String snCode; +// +// @Excel(name = "本次出货数") +// private Integer thisShippingNum; +// +// @Excel(name = "已出库数") +// private Integer hasOutOrderNum; +// +// @Excel(name = "已收货数") +// private Integer hasReceivingNum; +// +// @Excel(name = "已验收数") +// private Integer hasCheckNum; +// +// @Excel(name = "本次验收数") +// private Integer thisCheckNum; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java index d6b9f878..fabcbae4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java @@ -90,4 +90,9 @@ public interface AftersalesOutOrderDetailMapper * 根据出库单号和物料号更新出库单详情 * */ int updateAftersalesOutOrderDetailByCodeAndNo(AftersalesOutOrderDetail aftersalesOutOrderDetail); + + /** + * 根据出库单号集合查询出库单详情集合 + * */ + List selectAftersalesOutOrderDetailListByCodeList(List collectOutOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java index fccd1060..a1106a75 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java @@ -84,4 +84,9 @@ public interface AftersalesOutOrderMapper * @return 结果 */ public int restoreAftersalesOutOrderById(Long outOrderId); + + /** + * 根据售后维护设备出库单号查询售后维护设备出库 + * */ + List selectAftersalesOutOrderListByCodes(String[] outOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java index 516f8f30..84261fbf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java @@ -4,6 +4,7 @@ import java.util.List; import com.ruoyi.aftersales.domain.AftersalesOutOrder; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; +import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.system.domain.SysSalesShippingInform; @@ -158,4 +159,14 @@ public interface IAftersalesOutOrderService * @return */ int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder); + + /** + * 导出售后维护设备出库明细 + * */ + List exportAftersalesOutOrderList(List list); + + /** + * 根据售后维护设备出库单号查询售后维护设备出库 + * */ + List selectAftersalesOutOrderListByCodes(String[] outOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java index 55fb5fc1..01f35a82 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; +import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; import com.ruoyi.aftersales.mapper.AftersalesOutOrderDetailMapper; @@ -1032,4 +1033,74 @@ public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService public int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder) { return 1; } + + + /** + * 根据售后维护设备出库单号查询售后维护设备出库 + * */ + @Override + public List selectAftersalesOutOrderListByCodes(String[] outOrderCodes) { + List aftersalesOutOrders = aftersalesOutOrderMapper.selectAftersalesOutOrderListByCodes(outOrderCodes); + return aftersalesOutOrders; + } + + /** + * 导出售后维护设备出库明细 + * */ + @Override + public List exportAftersalesOutOrderList(List list) { + // 获取所有的出库单号 + List collectOutOrderCodes = list.stream() + .map(AftersalesOutOrder::getOutOrderCode) + .collect(Collectors.toList()); + + // 根据出库单号查询对应的物料详情列表 + List aftersalesOutOrderDetails = aftersalesOutOrderDetailMapper.selectAftersalesOutOrderDetailListByCodeList(collectOutOrderCodes); + + // 创建一个 AftersalesOutOrder 的 Map,键为出库单号 + Map aftersalesOutOrderMap = list.stream() + .collect(Collectors.toMap(AftersalesOutOrder::getOutOrderCode, Function.identity())); + + // 初始化导出列表 + List exportAftersalesOutOrderVos = new ArrayList<>(); + + for (AftersalesOutOrderDetail detail : aftersalesOutOrderDetails) { + ExportAftersalesOutOrderVo exportVo = new ExportAftersalesOutOrderVo(); + + // 从 AftersalesOutOrderDetail 填充数据 + exportVo.setMaterialNo(detail.getMaterialNo()); + exportVo.setMaterialName(detail.getMaterialName()); + exportVo.setMaterialBrand(detail.getMaterialBrand()); + exportVo.setMaterialUnit(detail.getMaterialUnit()); + exportVo.setMaterialDescribe(detail.getMaterialDescribe()); + exportVo.setMaterialProcessMethod(detail.getMaterialProcessMethod()); + exportVo.setMaterialModel(detail.getMaterialModel()); + + // 从 AftersalesOutOrder 填充数据,通过出库单号进行关联 + AftersalesOutOrder order = aftersalesOutOrderMap.get(detail.getOutOrderCode()); + if (order != null) { + exportVo.setOutOrderCode(order.getOutOrderCode()); + exportVo.setWarehouseOutStatus(order.getWarehouseOutStatus()); + exportVo.setRelatedOrderCode(order.getRelatedOrderCode()); + exportVo.setSalesOrderCode(order.getSalesOrderCode()); + exportVo.setWarehouseOrderType(order.getWarehouseOrderType()); + exportVo.setWarehouseOutType(order.getWarehouseOutType()); + exportVo.setBusinessName(order.getBusinessName()); + exportVo.setMaterialSum(order.getMaterialSum()); + exportVo.setEnterpriseSum(order.getEnterpriseSum()); + exportVo.setOutOrderTime(order.getOutOrderTime()); + exportVo.setPlanDeliveryTime(order.getPlanDeliveryTime()); + exportVo.setDeliveryCondition(order.getDeliveryCondition()); + exportVo.setApplyName(order.getApplyName()); + exportVo.setDeliveryAddress(order.getDeliveryAddress()); + exportVo.setDeliveryName(order.getDeliveryName()); + exportVo.setDeliveryNumber(order.getDeliveryNumber()); + } + + // 添加到结果列表 + exportAftersalesOutOrderVos.add(exportVo); + } + + return exportAftersalesOutOrderVos; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java index 44a569b0..e44bf9af 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java @@ -95,4 +95,9 @@ public interface SysSalesShippingInformDetailMapper * 根据出库单号批量查询销售出库详情 * */ List selectSalesShippingInformDetailListByCodes(List collectOutOrderCodes); + + /** + * 根据出库单号和物料号查询销售出库详情 + * */ + SysSalesShippingInformDetail selectSysSalesShippingInformDetailByCodeAndNo(SysSalesShippingInformDetail tempShippingInformDetail); } diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml index f7a95fb8..df7cc4dd 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml @@ -77,6 +77,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where out_order_code = #{outOrderCode} + + insert into aftersales_out_order_detail diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml index 46b53a5a..5822fd4d 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml @@ -67,7 +67,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where out_order_id = #{outOrderId} - + + + insert into aftersales_out_order diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml index c98d6f70..18ed6afb 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml @@ -71,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into sys_sales_shipping_inform_detail diff --git a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html index a812aecd..05330220 100644 --- a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html +++ b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html @@ -54,6 +54,13 @@ + + +
@@ -241,6 +248,30 @@ $.modal.open("售后出库单详情",url); } + // 导出 + function exportExcel() { + var ids = $.table.selectColumns("outOrderCode"); + var dataParam = $("#formId").serializeArray(); + + let tipMsg = "确定导出当前所有数据吗?"; + if ($.common.isNotEmpty(ids)) { + tipMsg = `确定导出 ${ids} 数据吗?`; + dataParam.push({ "name": "ids", "value": ids }); + } + $.modal.confirm(tipMsg, function () { + $.modal.loading("正在导出数据,请稍后..."); + $.post( prefix + "/export", dataParam, function (result) { + if (result.code === web_status.SUCCESS) { + window.location.href = ctx + "common/download?fileName="+ encodeURI(result.msg) + "&delete=" + true; + } else { + $.modal.alertError(result.msg); + } + $.modal.closeLoading(); + }); + }); + } + + \ No newline at end of file