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