From bb04da8874bfaaa8f25df647d442b8c3599596ce Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Mon, 17 Feb 2025 17:43:53 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E7=94=9F=E4=BA=A7=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=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=85=A5=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?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=94=9F=E4=BA=A7=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E5=8D=95=E6=98=8E=E7=BB=86=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=20=E5=AF=BC=E5=87=BA=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ErpInboundOrderController.java | 16 +- .../VO/ExportWarehouseStorageOrderVo.java | 363 ++++++++++++++++++ .../WarehouseStorageOrderDetailMapper.java | 4 + .../IWarehouseStorageOrderService.java | 7 +- .../WarehouseStorageOrderServiceImpl.java | 100 ++++- .../WarehouseStorageOrderDetailMapper.xml | 10 + 6 files changed, 485 insertions(+), 15 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseStorageOrderVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpInboundOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpInboundOrderController.java index 0c083a63..8db05a69 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpInboundOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpInboundOrderController.java @@ -3,17 +3,13 @@ package com.ruoyi.erp.controller; import java.util.List; import java.util.stream.Collectors; -import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.quality.domain.QualityOrder; import com.ruoyi.quality.service.IQualityOrderService; -import com.ruoyi.system.domain.SysSalesOrderChild; -import com.ruoyi.system.dto.SysEquipMaterialDto; import com.ruoyi.system.service.ISysSalesOrderChildService; -import com.ruoyi.warehouse.domain.WarehouseInventoryReportDamageChild; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.service.IWarehouseStorageOrderService; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -97,13 +93,15 @@ public class ErpInboundOrderController extends BaseController storageOrder.setWarehouseStorageType("5"); if (StringUtils.isEmpty(ids)){ List list = storageOrderService.selectWarehouseStorageOrderList(storageOrder); - ExcelUtil util = new ExcelUtil(WarehouseStorageOrder.class); - return util.exportExcel(list, "入库单数据"); + List exportWarehouseStorageOrderVos = storageOrderService.exportStorageOrderList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseStorageOrderVo.class); + return util.exportExcel(exportWarehouseStorageOrderVos, "入库单数据"); }else { String[] storageCodes = ids.split(","); List list = storageOrderService.selectStorageOrderListByCodes(storageCodes); - ExcelUtil util = new ExcelUtil(WarehouseStorageOrder.class); - return util.exportExcel(list, ids); + List exportWarehouseStorageOrderVos = storageOrderService.exportStorageOrderList(list); + ExcelUtil util = new ExcelUtil(ExportWarehouseStorageOrderVo.class); + return util.exportExcel(exportWarehouseStorageOrderVos, "入库单数据"); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseStorageOrderVo.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseStorageOrderVo.java new file mode 100644 index 00000000..2f81e90f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseStorageOrderVo.java @@ -0,0 +1,363 @@ +package com.ruoyi.warehouse.domain.VO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** +* 导出入库单明细 +* */ +@Data +public class ExportWarehouseStorageOrderVo { + + /** + * 入库单号 + */ + @Excel(name = "入库单号") + private String warehouseStorageCode; + + /** + * 关联订单号(多种订单类型) + */ + @Excel(name = "关联订单号") + private String relatedOrderCode; + + /** + * 关联品质单号 + */ + @Excel(name = "关联品质单号") + private String qualityOrderCode; + + /** + * 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) + */ + @Excel(name = "仓库入库状态", dictType = "warehouse_storage_status") + private String warehouseStorageStatus; + + /** + * 品质状态(0待品质、1部分品质、2全部品质) + */ + @Excel(name = "品质状态", dictType = "warehouse_quality_status") + private String warehouseQualityStatus; + + + /** + * 入库类型(0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库) + */ + @Excel(name = "入库类型", dictType = "warehouse_storage_type") + private String warehouseStorageType; + + /** + * 订单类型(0采购订单、1生产订单、2退换货订单、3委外订单) + */ + @Excel(name = "订单类型", dictType = "storage_order_type") + private String warehouseOrderType; + + /** + * 入库部门类型(0仓库,1采购 ) + */ + @Excel(name = "入库部门类型", dictType = "warehouse_dept_type") + private String warehouseDeptType; + + /** + * 通知已到货数量 + */ + @Excel(name = "通知已到货数量") + private Integer notifyArrivedNum; + + /** + * 实际已到货数量 + */ + @Excel(name = "实际已到货数量") + private Integer actualArrivedNum; + + + /** + * 暂收不合格数量 + */ + @Excel(name = "暂收不合格数量") + private Integer temporaryUnqualifiedNum; + + /** + * 品质不合格数量 + */ + @Excel(name = "品质不合格数量") + private Integer qualityUnqualifiedNum; + + + + + /** + * 委内加工费总价 + */ + private BigDecimal makeInTotalPrice; + + /** + * 到货时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "到货时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date arrivedTime; + + /** + * 暂收时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "暂收时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date temporaryTime; + + /** + * 交付质检时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "交付质检时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date deliveryInspectionTime; + + /** + * 品质时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "品质时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date qualityTime; + + /** + * 入库时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date storageTime; + + /** + * 仓库员工 + */ + @Excel(name = "仓库员工") + private String warehouseEmployee; + + /** + * 仓库ID + */ + @Excel(name = "仓库ID") + private String warehouseCode; + + /** + * 仓库名称 + */ + @Excel(name = "仓库名称") + private String warehouseName; + + /** + * 仓库详细地址 + */ + @Excel(name = "仓库详细地址") + private String warehouseDetailAddress; + + /** + * 供应商ID + */ + @Excel(name = "供应商ID") + private String supplierCode; + + /** + * 供应商名称 + */ + @Excel(name = "供应商名称") + private String supplierName; + + /** + * 联系人 + */ + @Excel(name = "联系人") + private String customerContact; + + /** + * 联系电话 + */ + @Excel(name = "联系电话") + private String contactNumber; + + /** + * 公司地址 + */ + @Excel(name = "公司地址") + private String supplierAddress; + + + /** + * 料号 + */ + @Excel(name = "料号") + private String materialNo; + + /** + * 物料名称 + */ + @Excel(name = "物料名称") + private String materialName; + + + /** + * 物料型号 + */ + @Excel(name = "物料型号") + private String materialModel; + + /** + * 物料品牌 + */ + @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 Integer makeTotal; + + /** + * 通知已到货数量 + */ + @Excel(name = "通知已到货数量") + private Integer notifyHasArrivedNum; + + /** + * 通知到货数量 + */ + @Excel(name = "通知到货数量") + private Integer notifyArriveNum; + + /** + * 实际已到货数量 + */ + @Excel(name = "实际已到货数量") + private Integer actualHasArrivedNum; + + /** + * 实际到货数量 + */ + @Excel(name = "实际到货数量") + private Integer actualArriveNum; + + /** + * 暂收已合格数量 + */ + @Excel(name = "暂收已合格数量") + private Integer temporaryHasQualifiedNum; + + /** + * 暂收合格数量 + */ + @Excel(name = "暂收合格数量") + private Integer temporaryQualifiedNum; + + /** + * 已入库数量 + */ + @Excel(name = "已入库数量") + private Integer hasStorageNum; + + /** + * 入库数量 + */ + @Excel(name = "入库数量") + private Integer storageNum; + + /** + * 品质已合格数量 + */ + @Excel(name = "品质已合格数量") + private Integer qualityHasQualifiedNum; + + /** + * 品质合格数量 + */ + @Excel(name = "品质合格数量") + private Integer qualityQualifiedNum; + + /** + * 退换货数 + */ + @Excel(name = "退换货数") + private Integer refundsExchangesNum; + + /** + * 品质备注 + */ + @Excel(name = "品质备注") + private String qualityRemark; + + /** + * 委内加工费单价 + */ + private BigDecimal makeInUnitPrice; + + + /** + * 暂收备注 + */ + @Excel(name = "暂收备注") + private String temporaryRemark; + + /** + * 存放位置 + */ + @Excel(name = "存放位置") + private String storageLocation; + + /** + * 生产入库数 + */ + @Excel(name = "生产入库数") + private Integer makeStorageNum; + + /** + * 客户ID + */ + @Excel(name = "客户ID") + private String customerId; + + /** + * 客户名称 + */ + @Excel(name = "客户名称") + private String customerName; + + /** + * 客户联系人 + */ + @Excel(name = "客户联系人") + private String customerContactPeople; + + /** + * 客户联系人电话 + */ + @Excel(name = "客户联系人电话") + private String customerContactNumber; + + /** + * 客户公司地址 + */ + @Excel(name = "客户公司地址") + private String customerCompanyAddress; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java index 4f6b55aa..65f4c1b2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java @@ -119,4 +119,8 @@ public interface WarehouseStorageOrderDetailMapper * */ int insertBatchWarehouseStorageOrderDetail(List warehouseStorageOrderDetailChildren); + /** + * 根据入库单号批量查询入库单详情 + * */ + List selectStorageOrderDetailListByCodeList(List collectWarehouseStorageCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java index 8b914156..400de56b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java @@ -4,8 +4,8 @@ import java.util.List; import com.ruoyi.quality.domain.QualityOrder; import com.ruoyi.quality.domain.QualityOrderDetail; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; -import org.springframework.transaction.annotation.Transactional; /** * 仓库入库单Service接口 @@ -148,4 +148,9 @@ public interface IWarehouseStorageOrderService //入库-员工退料单 int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder); + + /** + * 导出仓库入库单明细 + * */ + List exportStorageOrderList(List list); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index ed76b1ea..52152a5e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -1,10 +1,7 @@ package com.ruoyi.warehouse.service.impl; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; @@ -34,6 +31,7 @@ import com.ruoyi.system.service.ISysMakeOrderService; import com.ruoyi.system.service.ISysRemindService; import com.ruoyi.system.service.ISysSalesOrderService; import com.ruoyi.warehouse.domain.*; +import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo; import com.ruoyi.warehouse.mapper.*; import com.ruoyi.warehouse.service.IWarehouseInventoryInquiryService; import lombok.extern.slf4j.Slf4j; @@ -2201,4 +2199,96 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate()); return inquiryDetail; } + + + /** + * 导出仓库入库单明细 + * */ + @Override + public List exportStorageOrderList(List list) { + // 获取所有的入库单号 + List collectWarehouseStorageCodes = list.stream().map(WarehouseStorageOrder::getWarehouseStorageCode).collect(Collectors.toList()); + + // 根据入库单号查询对应的详情列表 + List storageOrderDetails = storageOrderDetailMapper.selectStorageOrderDetailListByCodeList(collectWarehouseStorageCodes); + + // 创建一个仓库入库订单VO的Map,键为入库单号 + Map warehouseStorageOrderMap = list.stream() + .collect(Collectors.toMap(WarehouseStorageOrder::getWarehouseStorageCode, Function.identity())); + + // 初始化导出列表 + List exportWarehouseStorageOrderVos = new ArrayList<>(); + + for (WarehouseStorageOrderDetail detail : storageOrderDetails) { + ExportWarehouseStorageOrderVo exportVo = new ExportWarehouseStorageOrderVo(); + + // 从WarehouseStorageOrderDetail填充数据 + exportVo.setMaterialNo(detail.getMaterialNo()); + exportVo.setMaterialName(detail.getMaterialName()); + exportVo.setMaterialModel(detail.getMaterialModel()); + exportVo.setMaterialBrand(detail.getMaterialBrand()); + exportVo.setMaterialUnit(detail.getMaterialUnit()); + exportVo.setMaterialDescribe(detail.getMaterialDescribe()); + exportVo.setMaterialProcessMethod(detail.getMaterialProcessMethod()); + exportVo.setMakeTotal(detail.getMakeTotal()); + exportVo.setNotifyHasArrivedNum(detail.getNotifyHasArrivedNum()); + exportVo.setNotifyArriveNum(detail.getNotifyArriveNum()); + exportVo.setActualHasArrivedNum(detail.getActualHasArrivedNum()); + exportVo.setActualArriveNum(detail.getActualArriveNum()); + exportVo.setTemporaryHasQualifiedNum(detail.getTemporaryHasQualifiedNum()); + exportVo.setTemporaryQualifiedNum(detail.getTemporaryQualifiedNum()); + exportVo.setHasStorageNum(detail.getHasStorageNum()); + exportVo.setStorageNum(detail.getStorageNum()); + exportVo.setQualityHasQualifiedNum(detail.getQualityHasQualifiedNum()); + exportVo.setQualityQualifiedNum(detail.getQualityQualifiedNum()); + exportVo.setRefundsExchangesNum(detail.getRefundsExchangesNum()); + exportVo.setQualityRemark(detail.getQualityRemark()); + exportVo.setMakeInUnitPrice(detail.getMakeInUnitPrice()); + exportVo.setTemporaryRemark(detail.getTemporaryRemark()); + exportVo.setStorageLocation(detail.getStorageLocation()); + exportVo.setMakeStorageNum(detail.getMakeStorageNum()); + exportVo.setCustomerId(detail.getCustomerId()); + exportVo.setCustomerName(detail.getCustomerName()); + exportVo.setCustomerContactPeople(detail.getCustomerContactPeople()); + exportVo.setCustomerContactNumber(detail.getCustomerContactNumber()); + exportVo.setCustomerCompanyAddress(detail.getCustomerCompanyAddress()); + + // 从WarehouseStorageOrder填充数据,通过入库单号进行关联 + WarehouseStorageOrder order = warehouseStorageOrderMap.get(detail.getWarehouseStorageCode()); + if (order != null) { + exportVo.setWarehouseStorageCode(order.getWarehouseStorageCode()); + exportVo.setRelatedOrderCode(order.getRelatedOrderCode()); + exportVo.setQualityOrderCode(order.getQualityOrderCode()); + exportVo.setWarehouseStorageStatus(order.getWarehouseStorageStatus()); + exportVo.setWarehouseQualityStatus(order.getWarehouseQualityStatus()); + exportVo.setWarehouseStorageType(order.getWarehouseStorageType()); + exportVo.setWarehouseOrderType(order.getWarehouseOrderType()); + exportVo.setWarehouseDeptType(order.getWarehouseDeptType()); + exportVo.setNotifyArrivedNum(order.getNotifyArrivedNum()); + exportVo.setActualArrivedNum(order.getActualArrivedNum()); + exportVo.setTemporaryUnqualifiedNum(order.getTemporaryUnqualifiedNum()); + exportVo.setQualityUnqualifiedNum(order.getQualityUnqualifiedNum()); + exportVo.setMakeInTotalPrice(order.getMakeInTotalPrice()); + exportVo.setArrivedTime(order.getArrivedTime()); + exportVo.setTemporaryTime(order.getTemporaryTime()); + exportVo.setDeliveryInspectionTime(order.getDeliveryInspectionTime()); + exportVo.setQualityTime(order.getQualityTime()); + exportVo.setStorageTime(order.getStorageTime()); + exportVo.setWarehouseEmployee(order.getWarehouseEmployee()); + exportVo.setWarehouseCode(order.getWarehouseCode()); + exportVo.setWarehouseName(order.getWarehouseName()); + exportVo.setWarehouseDetailAddress(order.getWarehouseDetailAddress()); + exportVo.setSupplierCode(order.getSupplierCode()); + exportVo.setSupplierName(order.getSupplierName()); + exportVo.setCustomerContact(order.getCustomerContact()); + exportVo.setContactNumber(order.getContactNumber()); + exportVo.setSupplierAddress(order.getSupplierAddress()); + } + + // 添加到结果列表 + exportWarehouseStorageOrderVos.add(exportVo); + } + + return exportWarehouseStorageOrderVos; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml index df4ce4fb..14456e46 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml @@ -164,6 +164,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into warehouse_storage_order_detail @@ -726,4 +734,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file