Browse Source

[feat] 生产管理

按照万材要求,生产管理生产入库单新增导出功能,支持部分行和全部行导出,导出更多数据
新增导出所有和选择导出后端接口
新增 导出生产管理生产入库单单明细方法
新增 导出入库单实体类
dev
liuxiaoxu 5 days ago
parent
commit
bb04da8874
  1. 16
      ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpInboundOrderController.java
  2. 363
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/VO/ExportWarehouseStorageOrderVo.java
  3. 4
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java
  4. 7
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java
  5. 100
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  6. 10
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml

16
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<WarehouseStorageOrder> list = storageOrderService.selectWarehouseStorageOrderList(storageOrder);
ExcelUtil<WarehouseStorageOrder> util = new ExcelUtil<WarehouseStorageOrder>(WarehouseStorageOrder.class);
return util.exportExcel(list, "入库单数据");
List<ExportWarehouseStorageOrderVo> exportWarehouseStorageOrderVos = storageOrderService.exportStorageOrderList(list);
ExcelUtil<ExportWarehouseStorageOrderVo> util = new ExcelUtil<ExportWarehouseStorageOrderVo>(ExportWarehouseStorageOrderVo.class);
return util.exportExcel(exportWarehouseStorageOrderVos, "入库单数据");
}else {
String[] storageCodes = ids.split(",");
List<WarehouseStorageOrder> list = storageOrderService.selectStorageOrderListByCodes(storageCodes);
ExcelUtil<WarehouseStorageOrder> util = new ExcelUtil<WarehouseStorageOrder>(WarehouseStorageOrder.class);
return util.exportExcel(list, ids);
List<ExportWarehouseStorageOrderVo> exportWarehouseStorageOrderVos = storageOrderService.exportStorageOrderList(list);
ExcelUtil<ExportWarehouseStorageOrderVo> util = new ExcelUtil<ExportWarehouseStorageOrderVo>(ExportWarehouseStorageOrderVo.class);
return util.exportExcel(exportWarehouseStorageOrderVos, "入库单数据");
}
}

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

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

@ -119,4 +119,8 @@ public interface WarehouseStorageOrderDetailMapper
* */
int insertBatchWarehouseStorageOrderDetail(List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailChildren);
/**
* 根据入库单号批量查询入库单详情
* */
List<WarehouseStorageOrderDetail> selectStorageOrderDetailListByCodeList(List<String> collectWarehouseStorageCodes);
}

7
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<ExportWarehouseStorageOrderVo> exportStorageOrderList(List<WarehouseStorageOrder> list);
}

100
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<ExportWarehouseStorageOrderVo> exportStorageOrderList(List<WarehouseStorageOrder> list) {
// 获取所有的入库单号
List<String> collectWarehouseStorageCodes = list.stream().map(WarehouseStorageOrder::getWarehouseStorageCode).collect(Collectors.toList());
// 根据入库单号查询对应的详情列表
List<WarehouseStorageOrderDetail> storageOrderDetails = storageOrderDetailMapper.selectStorageOrderDetailListByCodeList(collectWarehouseStorageCodes);
// 创建一个仓库入库订单VO的Map,键为入库单号
Map<String, WarehouseStorageOrder> warehouseStorageOrderMap = list.stream()
.collect(Collectors.toMap(WarehouseStorageOrder::getWarehouseStorageCode, Function.identity()));
// 初始化导出列表
List<ExportWarehouseStorageOrderVo> 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;
}
}

10
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderDetailMapper.xml

@ -164,6 +164,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectStorageOrderDetailListByCodeList" parameterType="String" resultMap="WarehouseStorageOrderDetailResult">
<include refid="selectWarehouseStorageOrderDetailVo"/>
where warehouse_storage_code in
<foreach collection="list" item="warehouseStorageCode" open="(" separator="," close=")">
#{warehouseStorageCode}
</foreach>
</select>
<insert id="insertWarehouseStorageOrderDetail" parameterType="WarehouseStorageOrderDetail" useGeneratedKeys="true" keyProperty="warehouseStorageDetailId">
insert into warehouse_storage_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -726,4 +734,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save