Browse Source

[feat] 仓库管理

按照万材要求,仓库管理仓库出库单新增导出功能,支持部分行和全部行导出,导出更多数据
新增导出所有和选择导出后端接口
新增 导出仓库管理仓库出库单明细方法
新增根据仓库出库单号查询仓库出库单集合方法
新增 导出仓库出库单明细实体类
dev
liuxiaoxu 3 days ago
parent
commit
ed945141fc
  1. 24
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseOutOrderController.java
  2. 2
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java
  3. 136
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseOutOrderVo.java
  4. 4
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java
  5. 4
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java
  6. 11
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java
  7. 76
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseOutOrderServiceImpl.java
  8. 8
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderDetailMapper.xml
  9. 8
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseOutOrderMapper.xml
  10. 26
      ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html

24
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<WarehouseOutOrder> list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder);
ExcelUtil<WarehouseOutOrder> util = new ExcelUtil<WarehouseOutOrder>(WarehouseOutOrder.class);
return util.exportExcel(list, "仓库出库单数据");
if (StringUtils.isEmpty(ids)){
List<WarehouseOutOrder> list = warehouseOutOrderService.selectWarehouseOutOrderList(warehouseOutOrder);
List<ExportWarehouseOutOrderVo> exportWarehouseOutOrderVos = warehouseOutOrderService.exportarehouseOutOrderList(list);
ExcelUtil<ExportWarehouseOutOrderVo> util = new ExcelUtil<ExportWarehouseOutOrderVo>(ExportWarehouseOutOrderVo.class);
return util.exportExcel(exportWarehouseOutOrderVos, "仓库出库单数据");
}else {
String[] outOrderCodes = ids.split(",");
List<WarehouseOutOrder> list = warehouseOutOrderService.selectWarehouseOutOrderListByCodes(outOrderCodes);
List<ExportWarehouseOutOrderVo> exportWarehouseOutOrderVos = warehouseOutOrderService.exportarehouseOutOrderList(list);
ExcelUtil<ExportWarehouseOutOrderVo> util = new ExcelUtil<ExportWarehouseOutOrderVo>(ExportWarehouseOutOrderVo.class);
return util.exportExcel(exportWarehouseOutOrderVos, "仓库出库单数据");
}
}
/**

2
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java

@ -84,8 +84,6 @@ public class WarehouseStorageOrderController extends BaseController
ExcelUtil<ExportWarehouseStorageOrderVo> util = new ExcelUtil<ExportWarehouseStorageOrderVo>(ExportWarehouseStorageOrderVo.class);
return util.exportExcel(exportWarehouseStorageOrderVos, "仓库入库单数据");
}
}

136
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;
}

4
ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderDetailMapper.java

@ -97,4 +97,8 @@ public interface WarehouseOutOrderDetailMapper
*/
List<WarehouseOutOrderDetail> selectShippingDeviceList(WarehouseOutOrderDetail warehouseOutOrderDetail);
/**
* 根据出库单号集合查询出库单详情数据
* */
List<WarehouseOutOrderDetail> selectOutOrderDetailListByCodeList(List<String> collectOutOrderCodes);
}

4
ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseOutOrderMapper.java

@ -109,4 +109,8 @@ public interface WarehouseOutOrderMapper
* */
public Integer sumOutOrderQuantityByMakeNo(String makeNo);
/**
* 通过出库单号数组查询仓库出库单
* */
List<WarehouseOutOrder> selectWarehouseOutOrderListByCodes(String[] outOrderCodes);
}

11
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<SelectShippingDeviceVO> showAftersalesShippingDeviceListTwo(WarehouseOutOrder warehouseOutOrder);
/**
* 导出仓库出库单明细
* */
List<ExportWarehouseOutOrderVo> exportarehouseOutOrderList(List<WarehouseOutOrder> list);
/**
* 通过出库单号数组查询仓库出库单
* */
List<WarehouseOutOrder> selectWarehouseOutOrderListByCodes(String[] outOrderCodes);
}

76
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<WarehouseOutOrder> 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<ExportWarehouseOutOrderVo> exportarehouseOutOrderList(List<WarehouseOutOrder> list) {
// 获取所有的出库单号
List<String> collectOutOrderCodes = list.stream()
.map(WarehouseOutOrder::getOutOrderCode)
.collect(Collectors.toList());
// 根据出库单号查询对应的物料详情列表
List<WarehouseOutOrderDetail> warehouseOutOrderDetails = outOrderDetailMapper.selectOutOrderDetailListByCodeList(collectOutOrderCodes);
// 创建一个 WarehouseOutOrder 的 Map,键为出库单号
Map<String, WarehouseOutOrder> warehouseOutOrderMap = list.stream()
.collect(Collectors.toMap(WarehouseOutOrder::getOutOrderCode, Function.identity()));
// 初始化导出列表
List<ExportWarehouseOutOrderVo> 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;
}
}

8
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}
</select>
<select id="selectOutOrderDetailListByCodeList" parameterType="String" resultMap="WarehouseOutOrderDetailResult">
<include refid="selectWarehouseOutOrderDetailVo"/>
where out_order_code in
<foreach collection="list" item="outOrderCode" open="(" separator="," close=")">
#{outOrderCode}
</foreach>
</select>
<insert id="insertWarehouseOutOrderDetail" parameterType="WarehouseOutOrderDetail" useGeneratedKeys="true" keyProperty="outOrderDetailId">
insert into warehouse_out_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">

8
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'
</select>
<select id="selectWarehouseOutOrderListByCodes" parameterType="String" resultMap="WarehouseOutOrderResult">
<include refid="selectWarehouseOutOrderVo"/>
where out_order_code in
<foreach collection="array" item="outOrderCode" open="(" separator="," close=")">
#{outOrderCode}
</foreach>
</select>
<insert id="insertWarehouseOutOrder" parameterType="WarehouseOutOrder" useGeneratedKeys="true" keyProperty="outOrderId">
insert into warehouse_out_order
<trim prefix="(" suffix=")" suffixOverrides=",">

26
ruoyi-admin/src/main/resources/templates/warehouse/warehouseOutOrder/warehouseOutOrder.html

@ -56,7 +56,7 @@
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.table.exportExcel()" shiro:hasPermission="warehouse:warehouseOutOrder:export">
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="warehouse:warehouseOutOrder:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
@ -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();
});
});
}
</script>
</body>
</html>
Loading…
Cancel
Save