From ed945141fc523f449e9c14040b723c3d82c84edc Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 19 Feb 2025 13:35:02 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E4=BB=93=E5=BA=93=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=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=A1=8C=E5=92=8C=E5=85=A8=E9=83=A8=E8=A1=8C=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E5=87=BA=E6=9B=B4=E5=A4=9A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=92=8C=E9=80=89=E6=8B=A9=E5=AF=BC=E5=87=BA=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=E4=BB=93=E5=BA=93=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=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=E4=BB=93=E5=BA=93=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E9=9B=86=E5=90=88=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=20=E5=AF=BC=E5=87=BA=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E6=98=8E=E7=BB=86=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WarehouseOutOrderController.java | 24 +++- .../WarehouseStorageOrderController.java | 2 - .../domain/VO/ExportWarehouseOutOrderVo.java | 136 ++++++++++++++++++ .../mapper/WarehouseOutOrderDetailMapper.java | 4 + .../mapper/WarehouseOutOrderMapper.java | 4 + .../service/IWarehouseOutOrderService.java | 11 ++ .../impl/WarehouseOutOrderServiceImpl.java | 76 ++++++++++ .../WarehouseOutOrderDetailMapper.xml | 8 ++ .../warehouse/WarehouseOutOrderMapper.xml | 8 ++ .../warehouseOutOrder/warehouseOutOrder.html | 26 +++- 10 files changed, 292 insertions(+), 7 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseOutOrderVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java index 83b2e12e..20079f3c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java @@ -5,12 +5,16 @@ import java.util.Map; import java.util.stream.Collectors; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseOutOrderVo; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.domain.WarehouseOutOrderDetail; +import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.service.IWarehouseOutOrderDetailService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; @@ -67,11 +71,23 @@ public class WarehouseOutOrderController extends BaseController @Log(title = "仓库出库单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(WarehouseOutOrder warehouseOutOrder) + public AjaxResult export(WarehouseOutOrder warehouseOutOrder, String ids) { - List list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder); - ExcelUtil util = new ExcelUtil(WarehouseOutOrder.class); - return util.exportExcel(list, "仓库出库单数据"); + + if (StringUtils.isEmpty(ids)){ + List list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder); + List exportWarehouseOutOrderVos = warehouseOutOrderService.exportarehouseOutOrderList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseOutOrderVo.class); + return util.exportExcel(exportWarehouseOutOrderVos, "仓库出库单数据"); + }else { + String[] outOrderCodes = ids.split(","); + List list = warehouseOutOrderService.selectWarehouseOutOrderListByCodes(outOrderCodes); + List exportWarehouseOutOrderVos = warehouseOutOrderService.exportarehouseOutOrderList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseOutOrderVo.class); + return util.exportExcel(exportWarehouseOutOrderVos, "仓库出库单数据"); + } + + } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java index f49e6ae1..6784cf3f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java @@ -84,8 +84,6 @@ public class WarehouseStorageOrderController extends BaseController ExcelUtil util = new ExcelUtil(ExportWarehouseStorageOrderVo.class); return util.exportExcel(exportWarehouseStorageOrderVos, "仓库入库单数据"); } - - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseOutOrderVo.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseOutOrderVo.java new file mode 100644 index 00000000..6bbc3da3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseOutOrderVo.java @@ -0,0 +1,136 @@ +package com.ruoyi.warehouse.domain.VO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** +* 导出出库单明细 +* */ +@Data +public class ExportWarehouseOutOrderVo { + + + /** 出库单号 */ + @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; + + + /** 出库订单类型(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 warehouseName; + + /** 物料合计 */ + @Excel(name = "物料合计") + private Integer materialSum; + + /** 数量合计 */ + @Excel(name = "数量合计") + private Integer enterpriseSum; + + /** 出库数 */ + @Excel(name = "出库数") + private Integer outOrderSum; + + + /** 出库时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date outOrderTime; + + + /** 供应商ID */ + @Excel(name = "供应商ID") + private String supplierCode; + + /** 供应商名称 */ + @Excel(name = "供应商名称") + private String supplierName; + + /** 收货地址 */ + @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 = "生产订单数") + private Integer makeNum; + + /** 已出库数 */ + @Excel(name = "已出库数") + private Integer hasOutOrderSum; + + /** 申请出库数 */ + @Excel(name = "申请出库数") + private Integer applyOutOrderSum; + + /** 准备出库数 */ + @Excel(name = "准备出库数") + private Integer prepareOutOrderSum; + + /** 实际出库数 */ + @Excel(name = "实际出库数") + private Integer actualOutOrderSum; + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java index f3705834..e57f3ff3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java @@ -97,4 +97,8 @@ public interface WarehouseOutOrderDetailMapper */ List selectShippingDeviceList(WarehouseOutOrderDetail warehouseOutOrderDetail); + /** + * 根据出库单号集合查询出库单详情数据 + * */ + List selectOutOrderDetailListByCodeList(List collectOutOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java index 22ad88ae..09d4c820 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java @@ -109,4 +109,8 @@ public interface WarehouseOutOrderMapper * */ public Integer sumOutOrderQuantityByMakeNo(String makeNo); + /** + * 通过出库单号数组查询仓库出库单 + * */ + List selectWarehouseOutOrderListByCodes(String[] outOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java index d5728b08..020cdcc1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java @@ -8,6 +8,8 @@ import com.ruoyi.system.domain.SysMakeorderPickVo; import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.domain.Vo.BaseEmpRequisiteOrderVO; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseOutOrderVo; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.domain.WarehouseOutOrder; import org.springframework.transaction.annotation.Transactional; @@ -143,4 +145,13 @@ public interface IWarehouseOutOrderService */ List showAftersalesShippingDeviceListTwo(WarehouseOutOrder warehouseOutOrder); + /** + * 导出仓库出库单明细 + * */ + List exportarehouseOutOrderList(List list); + + /** + * 通过出库单号数组查询仓库出库单 + * */ + List selectWarehouseOutOrderListByCodes(String[] outOrderCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java index 09b33ad0..6d424568 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.warehouse.service.impl; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; @@ -31,6 +32,8 @@ import com.ruoyi.system.domain.Vo.OutsourceRequisitionVO; import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysRemindService; import com.ruoyi.warehouse.domain.*; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseOutOrderVo; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.mapper.WarehouseInventoryInquiryDetailMapper; import com.ruoyi.warehouse.mapper.WarehouseInventoryInquiryMapper; import com.ruoyi.warehouse.mapper.WarehouseOutOrderDetailMapper; @@ -142,6 +145,15 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService return warehouseOutOrderMapper.selectWarehouseOutOrderList(warehouseOutOrder); } + + /** + * 通过出库单号数组查询仓库出库单 + * */ + @Override + public List selectWarehouseOutOrderListByCodes(String[] outOrderCodes) { + return warehouseOutOrderMapper.selectWarehouseOutOrderListByCodes(outOrderCodes); + } + /** * 新增仓库出库单 * @@ -1613,4 +1625,68 @@ public class WarehouseOutOrderServiceImpl implements IWarehouseOutOrderService inquiryDetail.setCreateBy(ShiroUtils.getLoginName()); return inquiryDetail; } + + /** + * 导出仓库出库单明细 + * */ + @Override + public List exportarehouseOutOrderList(List list) { + // 获取所有的出库单号 + List collectOutOrderCodes = list.stream() + .map(WarehouseOutOrder::getOutOrderCode) + .collect(Collectors.toList()); + + // 根据出库单号查询对应的物料详情列表 + List warehouseOutOrderDetails = outOrderDetailMapper.selectOutOrderDetailListByCodeList(collectOutOrderCodes); + + // 创建一个 WarehouseOutOrder 的 Map,键为出库单号 + Map warehouseOutOrderMap = list.stream() + .collect(Collectors.toMap(WarehouseOutOrder::getOutOrderCode, Function.identity())); + + // 初始化导出列表 + List exportWarehouseOutOrderVos = new ArrayList<>(); + + for (WarehouseOutOrderDetail detail : warehouseOutOrderDetails) { + ExportWarehouseOutOrderVo exportVo = new ExportWarehouseOutOrderVo(); + + // 从 WarehouseOutOrderDetail 填充数据 + 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()); + exportVo.setMakeNum(detail.getMakeNum()); + exportVo.setHasOutOrderSum(detail.getHasOutOrderSum()); + exportVo.setApplyOutOrderSum(detail.getApplyOutOrderSum()); + exportVo.setPrepareOutOrderSum(detail.getPrepareOutOrderSum()); + exportVo.setActualOutOrderSum(detail.getActualOutOrderSum()); + + // 从 WarehouseOutOrder 填充数据,通过出库单号进行关联 + WarehouseOutOrder order = warehouseOutOrderMap.get(detail.getOutOrderCode()); + if (order != null) { + exportVo.setOutOrderCode(order.getOutOrderCode()); + exportVo.setWarehouseOutStatus(order.getWarehouseOutStatus()); + exportVo.setRelatedOrderCode(order.getRelatedOrderCode()); + exportVo.setWarehouseOrderType(order.getWarehouseOrderType()); + exportVo.setWarehouseOutType(order.getWarehouseOutType()); + exportVo.setWarehouseName(order.getWarehouseName()); + exportVo.setMaterialSum(order.getMaterialSum()); + exportVo.setEnterpriseSum(order.getEnterpriseSum()); + exportVo.setOutOrderSum(order.getOutOrderSum()); + exportVo.setOutOrderTime(order.getOutOrderTime()); + exportVo.setSupplierCode(order.getSupplierCode()); + exportVo.setSupplierName(order.getSupplierName()); + exportVo.setDeliveryAddress(order.getDeliveryAddress()); + exportVo.setDeliveryName(order.getDeliveryName()); + exportVo.setDeliveryNumber(order.getDeliveryNumber()); + } + + // 添加到结果列表 + exportWarehouseOutOrderVos.add(exportVo); + } + + return exportWarehouseOutOrderVos; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderDetailMapper.xml index 12c32c5d..404f5d58 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderDetailMapper.xml @@ -98,6 +98,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and material_no = #{materialNo} + + insert into warehouse_out_order_detail diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml index 8af5804d..d2b5f01e 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml @@ -109,6 +109,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where make_no = #{makeNo} and warehouse_out_status = '7' + + insert into warehouse_out_order diff --git a/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html b/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html index 291a77cd..b5992c65 100644 --- a/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html +++ b/ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html @@ -56,7 +56,7 @@ @@ -444,6 +444,30 @@ var url = ctx + 'warehouse/warehouseOutOrder/refundsExchangesOutWarehouseDetail/' + outOrderId; $.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