feat(wms): 添加钢卷库区操作记录导出功能以及优化查询速率
- 在服务接口中新增 exportBySecondWarehouseIdAndTimeRange 方法用于导出功能 - 在控制器中新增 exportByWarehouseAndTime 接口支持报表导出 - 在映射器中新增 selectVoListWithJoin 查询方法优化关联查询 - 在 XML 映射文件中新增完整的关联查询 SQL 和结果映射配置 - 在服务实现类中重构查询逻辑使用新的关联查询方法 - 新增 WmsCoilWarehouseOperationLogExportVo 导出数据对象 - 实现导出逻辑将操作记录转换为 Excel 格式并支持多表关联 - 添加状态描述转换方法支持中文显示 - 更新 VO 类继承 BaseEntity 基础实体类
This commit is contained in:
@@ -19,6 +19,7 @@ import com.klp.common.core.validate.EditGroup;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogVo;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogExportVo;
|
||||
import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo;
|
||||
import com.klp.service.IWmsCoilWarehouseOperationLogService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
@@ -151,4 +152,26 @@ public class WmsCoilWarehouseOperationLogController extends BaseController {
|
||||
@RequestParam(required = false) Date endTime) {
|
||||
return R.ok(iWmsCoilWarehouseOperationLogService.queryByCoilId(coilId, operationType, inOutType, startTime, endTime));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出钢卷库区操作记录(报表导出)
|
||||
*
|
||||
* @param secondWarehouseId 二级库区ID
|
||||
* @param operationType 操作类型
|
||||
* @param inOutType 出入库类型
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
*/
|
||||
@Log(title = "钢卷库区操作记录导出", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/exportByWarehouseAndTime")
|
||||
public void exportByWarehouseAndTime(
|
||||
@RequestParam Long secondWarehouseId,
|
||||
@RequestParam(required = false) Integer operationType,
|
||||
@RequestParam(required = false) Integer inOutType,
|
||||
@RequestParam(required = false) Date startTime,
|
||||
@RequestParam(required = false) Date endTime,
|
||||
HttpServletResponse response) {
|
||||
List<WmsCoilWarehouseOperationLogExportVo> list = iWmsCoilWarehouseOperationLogService.exportBySecondWarehouseIdAndTimeRange(secondWarehouseId, operationType, inOutType, startTime, endTime);
|
||||
ExcelUtil.exportExcel(list, "钢卷库区操作记录导出", WmsCoilWarehouseOperationLogExportVo.class, response);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.klp.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 钢卷库区操作记录导出VO
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-24
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class WmsCoilWarehouseOperationLogExportVo {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ExcelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private Date createTimeLog;
|
||||
|
||||
@ExcelProperty(value = "业务操作类型")
|
||||
private String operationTypeDesc;
|
||||
|
||||
@ExcelProperty(value = "出入库方向")
|
||||
private String inOutTypeDesc;
|
||||
|
||||
// 应该是被移动库区
|
||||
@ExcelProperty(value = "库区")
|
||||
private String warehouseName;
|
||||
|
||||
@ExcelProperty(value = "类型")
|
||||
private String itemTypeDesc;
|
||||
|
||||
@ExcelProperty(value = "逻辑库区")
|
||||
private String logicalWarehouseName;
|
||||
|
||||
@ExcelProperty(value = "钢卷当前实际库区")
|
||||
private String actualWarehouseName;
|
||||
|
||||
@ExcelProperty(value = "入场卷号")
|
||||
private String enterCoilNo;
|
||||
|
||||
@ExcelProperty(value = "厂家卷号")
|
||||
private String supplierCoilNo;
|
||||
|
||||
@ExcelProperty(value = "成品卷号")
|
||||
private String currentCoilNo;
|
||||
|
||||
@ExcelProperty(value = "日期")
|
||||
private Date createTime;
|
||||
|
||||
@ExcelProperty(value = "重量")
|
||||
private BigDecimal netWeight;
|
||||
|
||||
@ExcelProperty(value = "用途")
|
||||
private String purpose;
|
||||
|
||||
@ExcelProperty(value = "切边要求")
|
||||
private String trimmingRequirement;
|
||||
|
||||
@ExcelProperty(value = "包装种类")
|
||||
private String packagingRequirement;
|
||||
|
||||
@ExcelProperty(value = "产品质量")
|
||||
private String qualityStatus;
|
||||
|
||||
@ExcelProperty(value = "打包状态")
|
||||
private String packingStatus;
|
||||
|
||||
@ExcelProperty(value = "库存状态")
|
||||
private String statusDesc;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ExcelProperty(value = "名称")
|
||||
private String itemName;
|
||||
|
||||
@ExcelProperty(value = "规格")
|
||||
private String specification;
|
||||
|
||||
@ExcelProperty(value = "长度")
|
||||
private BigDecimal length;
|
||||
|
||||
@ExcelProperty(value = "材质")
|
||||
private String material;
|
||||
|
||||
@ExcelProperty(value = "厂家")
|
||||
private String manufacturer;
|
||||
|
||||
@ExcelProperty(value = "表面处理")
|
||||
private String surfaceTreatmentDesc;
|
||||
|
||||
@ExcelProperty(value = "锌层")
|
||||
private String zincLayer;
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.klp.common.annotation.ExcelDictFormat;
|
||||
import com.klp.common.convert.ExcelDictConvert;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
@@ -18,7 +19,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class WmsCoilWarehouseOperationLogVo {
|
||||
public class WmsCoilWarehouseOperationLogVo extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@@ -3,6 +3,10 @@ package com.klp.mapper;
|
||||
import com.klp.domain.WmsCoilWarehouseOperationLog;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogVo;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 钢卷库区操作记录Mapper接口
|
||||
@@ -12,4 +16,9 @@ import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
*/
|
||||
public interface WmsCoilWarehouseOperationLogMapper extends BaseMapperPlus<WmsCoilWarehouseOperationLogMapper, WmsCoilWarehouseOperationLog, WmsCoilWarehouseOperationLogVo> {
|
||||
|
||||
List<WmsCoilWarehouseOperationLogVo> selectVoListWithJoin(@Param("warehouseIds") List<Long> warehouseIds,
|
||||
@Param("operationType") Integer operationType,
|
||||
@Param("inOutType") Integer inOutType,
|
||||
@Param("startTime") Date startTime,
|
||||
@Param("endTime") Date endTime);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Collection;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogExportVo;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -72,4 +73,16 @@ public interface IWmsCoilWarehouseOperationLogService {
|
||||
* @return 操作记录列表(含钢卷信息和库区信息)
|
||||
*/
|
||||
List<WmsCoilWarehouseOperationLogVo> queryByCoilId(Long coilId, Integer operationType, Integer inOutType, Date startTime, Date endTime);
|
||||
|
||||
/**
|
||||
* 导出钢卷库区操作记录(报表导出)
|
||||
*
|
||||
* @param secondWarehouseId 二级库区ID
|
||||
* @param operationType 操作类型
|
||||
* @param inOutType 出入库类型
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 导出数据列表
|
||||
*/
|
||||
List<WmsCoilWarehouseOperationLogExportVo> exportBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Integer operationType, Integer inOutType, Date startTime, Date endTime);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,10 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogVo;
|
||||
import com.klp.domain.vo.WmsCoilWarehouseOperationLogExportVo;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
import com.klp.domain.vo.WmsRawMaterialVo;
|
||||
import com.klp.domain.vo.WmsProductVo;
|
||||
import com.klp.domain.WmsCoilWarehouseOperationLog;
|
||||
import com.klp.mapper.WmsCoilWarehouseOperationLogMapper;
|
||||
import com.klp.service.IWmsCoilWarehouseOperationLogService;
|
||||
@@ -134,52 +137,49 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<WmsCoilWarehouseOperationLog> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(WmsCoilWarehouseOperationLog::getActualWarehouseId, warehouseIds);
|
||||
lqw.eq(operationType != null, WmsCoilWarehouseOperationLog::getOperationType, operationType);
|
||||
lqw.eq(inOutType != null, WmsCoilWarehouseOperationLog::getInOutType, inOutType);
|
||||
lqw.ge(startTime != null, WmsCoilWarehouseOperationLog::getCreateTime, startTime);
|
||||
lqw.le(endTime != null, WmsCoilWarehouseOperationLog::getCreateTime, endTime);
|
||||
lqw.orderByDesc(WmsCoilWarehouseOperationLog::getCreateTime);
|
||||
|
||||
List<WmsCoilWarehouseOperationLogVo> list = baseMapper.selectVoList(lqw);
|
||||
|
||||
Set<Long> coilIds = list.stream()
|
||||
.map(WmsCoilWarehouseOperationLogVo::getCoilId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
Map<Long, WmsMaterialCoilVo> coilMap = new HashMap<>();
|
||||
if (!coilIds.isEmpty()) {
|
||||
WmsMaterialCoilBo bo = new WmsMaterialCoilBo();
|
||||
bo.setCoilIds(coilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
List<WmsMaterialCoilVo> coils = wmsMaterialCoilService.queryList(bo);
|
||||
for (WmsMaterialCoilVo coil : coils) {
|
||||
coilMap.put(coil.getCoilId(), coil);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Map<Long, WmsActualWarehouseVo> warehouseMap = new HashMap<>();
|
||||
if (!warehouseIds.isEmpty()) {
|
||||
LambdaQueryWrapper<WmsActualWarehouse> warehouseQuery = Wrappers.lambdaQuery();
|
||||
warehouseQuery.in(WmsActualWarehouse::getActualWarehouseId, warehouseIds);
|
||||
List<WmsActualWarehouse> warehouses = wmsActualWarehouseMapper.selectList(warehouseQuery);
|
||||
for (WmsActualWarehouse warehouse : warehouses) {
|
||||
WmsActualWarehouseVo vo = BeanUtil.toBean(warehouse, WmsActualWarehouseVo.class);
|
||||
warehouseMap.put(warehouse.getActualWarehouseId(), vo);
|
||||
}
|
||||
}
|
||||
List<WmsCoilWarehouseOperationLogVo> list = baseMapper.selectVoListWithJoin(new ArrayList<>(warehouseIds), operationType, inOutType, startTime, endTime);
|
||||
|
||||
for (WmsCoilWarehouseOperationLogVo vo : list) {
|
||||
vo.setCoil(coilMap.get(vo.getCoilId()));
|
||||
vo.setWarehouse(warehouseMap.get(vo.getActualWarehouseId()));
|
||||
if (vo.getCoil() != null) {
|
||||
buildItemObjectFromJoin(vo.getCoil());
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private void buildItemObjectFromJoin(WmsMaterialCoilVo vo) {
|
||||
if (vo.getItemId() == null || vo.getItemType() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ("raw_material".equals(vo.getItemType())) {
|
||||
WmsRawMaterialVo rawMaterial = new WmsRawMaterialVo();
|
||||
rawMaterial.setRawMaterialId(vo.getItemId());
|
||||
rawMaterial.setRawMaterialCode(vo.getItemCode());
|
||||
rawMaterial.setRawMaterialName(vo.getItemName());
|
||||
rawMaterial.setSpecification(vo.getSpecification());
|
||||
rawMaterial.setMaterial(vo.getMaterial());
|
||||
rawMaterial.setManufacturer(vo.getManufacturer());
|
||||
rawMaterial.setSurfaceTreatmentDesc(vo.getSurfaceTreatmentDesc());
|
||||
rawMaterial.setZincLayer(vo.getZincLayer());
|
||||
vo.setRawMaterial(rawMaterial);
|
||||
}
|
||||
|
||||
if ("product".equals(vo.getItemType())) {
|
||||
WmsProductVo product = new WmsProductVo();
|
||||
product.setProductId(vo.getItemId());
|
||||
product.setProductCode(vo.getItemCode());
|
||||
product.setProductName(vo.getItemName());
|
||||
product.setSpecification(vo.getSpecification());
|
||||
product.setMaterial(vo.getMaterial());
|
||||
product.setManufacturer(vo.getManufacturer());
|
||||
product.setSurfaceTreatmentDesc(vo.getSurfaceTreatmentDesc());
|
||||
product.setZincLayer(vo.getZincLayer());
|
||||
vo.setProduct(product);
|
||||
}
|
||||
}
|
||||
|
||||
private Set<Long> getAllChildWarehouseIds(Long parentId) {
|
||||
Set<Long> result = new HashSet<>();
|
||||
if (parentId == null) {
|
||||
@@ -258,4 +258,84 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsCoilWarehouseOperationLogExportVo> exportBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Integer operationType, Integer inOutType, Date startTime, Date endTime) {
|
||||
List<WmsCoilWarehouseOperationLogVo> voList = queryBySecondWarehouseIdAndTimeRange(secondWarehouseId, operationType, inOutType, startTime, endTime);
|
||||
|
||||
List<WmsCoilWarehouseOperationLogExportVo> exportList = new ArrayList<>();
|
||||
for (WmsCoilWarehouseOperationLogVo vo : voList) {
|
||||
WmsCoilWarehouseOperationLogExportVo exportVo = new WmsCoilWarehouseOperationLogExportVo();
|
||||
|
||||
WmsMaterialCoilVo coil = vo.getCoil();
|
||||
if (coil != null) {
|
||||
exportVo.setEnterCoilNo(coil.getEnterCoilNo());
|
||||
exportVo.setCurrentCoilNo(coil.getCurrentCoilNo());
|
||||
exportVo.setSupplierCoilNo(coil.getSupplierCoilNo());
|
||||
exportVo.setNetWeight(coil.getNetWeight());
|
||||
exportVo.setItemTypeDesc(coil.getItemType());
|
||||
exportVo.setPurpose(coil.getBusinessPurpose());
|
||||
exportVo.setTrimmingRequirement(coil.getTrimmingRequirement());
|
||||
exportVo.setPackagingRequirement(coil.getPackagingRequirement());
|
||||
exportVo.setQualityStatus(coil.getQualityStatus());
|
||||
exportVo.setPackingStatus(coil.getPackingStatus());
|
||||
exportVo.setStatusDesc(getStatusDesc(coil.getStatus()));
|
||||
exportVo.setItemName(coil.getItemName());
|
||||
exportVo.setSpecification(coil.getSpecification());
|
||||
exportVo.setLength(coil.getLength());
|
||||
exportVo.setMaterial(coil.getMaterial());
|
||||
exportVo.setManufacturer(coil.getManufacturer());
|
||||
exportVo.setSurfaceTreatmentDesc(coil.getSurfaceTreatmentDesc());
|
||||
exportVo.setZincLayer(coil.getZincLayer());
|
||||
exportVo.setCreateTime(coil.getCreateTime());
|
||||
exportVo.setLogicalWarehouseName(coil.getWarehouseName());
|
||||
exportVo.setActualWarehouseName(coil.getActualWarehouseName());
|
||||
}
|
||||
|
||||
WmsActualWarehouseVo warehouse = vo.getWarehouse();
|
||||
if (warehouse != null) {
|
||||
exportVo.setWarehouseName(warehouse.getActualWarehouseName());
|
||||
}
|
||||
|
||||
exportVo.setOperationTypeDesc(getOperationTypeDesc(vo.getOperationType()));
|
||||
exportVo.setInOutTypeDesc(getInOutTypeDesc(vo.getInOutType()));
|
||||
exportVo.setCreateBy(vo.getCreateBy());
|
||||
exportVo.setCreateTimeLog(vo.getCreateTime());
|
||||
exportVo.setRemark(vo.getRemark());
|
||||
|
||||
exportList.add(exportVo);
|
||||
}
|
||||
|
||||
return exportList;
|
||||
}
|
||||
|
||||
private String getStatusDesc(Integer status) {
|
||||
if (status == null) return null;
|
||||
switch (status) {
|
||||
case 0: return "在库";
|
||||
case 1: return "在途";
|
||||
case 2: return "已出库";
|
||||
default: return String.valueOf(status);
|
||||
}
|
||||
}
|
||||
|
||||
private String getOperationTypeDesc(Integer operationType) {
|
||||
if (operationType == null) return null;
|
||||
switch (operationType) {
|
||||
case 1: return "收货";
|
||||
case 2: return "加工";
|
||||
case 3: return "调拨";
|
||||
case 4: return "发货";
|
||||
default: return String.valueOf(operationType);
|
||||
}
|
||||
}
|
||||
|
||||
private String getInOutTypeDesc(Integer inOutType) {
|
||||
if (inOutType == null) return null;
|
||||
switch (inOutType) {
|
||||
case 1: return "入库";
|
||||
case 2: return "出库";
|
||||
default: return String.valueOf(inOutType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,5 +18,115 @@
|
||||
<result property="updateBy" column="update_by"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.klp.domain.vo.WmsCoilWarehouseOperationLogVo" id="WmsCoilWarehouseOperationLogVoResult">
|
||||
<result property="logId" column="log_id"/>
|
||||
<result property="coilId" column="coil_id"/>
|
||||
<result property="actualWarehouseId" column="actual_warehouse_id"/>
|
||||
<result property="operationType" column="operation_type"/>
|
||||
<result property="inOutType" column="in_out_type"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<!-- warehouse -->
|
||||
<association property="warehouse" javaType="com.klp.domain.vo.WmsActualWarehouseVo">
|
||||
<result property="actualWarehouseId" column="actual_warehouse_id"/>
|
||||
<result property="actualWarehouseName" column="actual_warehouse_name"/>
|
||||
</association>
|
||||
<!-- coil -->
|
||||
<association property="coil" javaType="com.klp.domain.vo.WmsMaterialCoilVo">
|
||||
<result property="coilId" column="coil_id"/>
|
||||
<result property="itemId" column="item_id"/>
|
||||
<result property="itemCode" column="item_code"/>
|
||||
<result property="enterCoilNo" column="enter_coil_no"/>
|
||||
<result property="currentCoilNo" column="current_coil_no"/>
|
||||
<result property="supplierCoilNo" column="supplier_coil_no"/>
|
||||
<result property="itemType" column="item_type"/>
|
||||
<result property="grossWeight" column="gross_weight"/>
|
||||
<result property="netWeight" column="net_weight"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="remark" column="coil_remark"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
<result property="actualWarehouseName" column="aw_actual_warehouse_name"/>
|
||||
<result property="itemName" column="item_name"/>
|
||||
<result property="specification" column="specification"/>
|
||||
<result property="material" column="material"/>
|
||||
<result property="manufacturer" column="manufacturer"/>
|
||||
<result property="surfaceTreatmentDesc" column="surface_treatment_desc"/>
|
||||
<result property="zincLayer" column="zinc_layer"/>
|
||||
<result property="businessPurpose" column="business_purpose"/>
|
||||
<result property="trimmingRequirement" column="trimming_requirement"/>
|
||||
<result property="packagingRequirement" column="packaging_requirement"/>
|
||||
<result property="qualityStatus" column="quality_status"/>
|
||||
<result property="packingStatus" column="packing_status"/>
|
||||
<result property="length" column="length"/>
|
||||
<result property="createTime" column="coil_create_time"/>
|
||||
</association>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectVoListWithJoin" resultMap="WmsCoilWarehouseOperationLogVoResult">
|
||||
SELECT log.log_id, log.coil_id, log.actual_warehouse_id, log.operation_type, log.in_out_type, log.remark,
|
||||
log.create_time, log.create_by, log.update_time, log.update_by,
|
||||
aw.actual_warehouse_name,
|
||||
mc.item_id,
|
||||
mc.enter_coil_no, mc.current_coil_no, mc.supplier_coil_no, mc.item_type,
|
||||
mc.gross_weight, mc.net_weight, mc.status, mc.remark AS coil_remark,
|
||||
mc.create_time AS coil_create_time,
|
||||
w.warehouse_name,
|
||||
aw2.actual_warehouse_name AS aw_actual_warehouse_name,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
|
||||
WHEN mc.item_type = 'product' THEN p.specification
|
||||
ELSE NULL END AS specification,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.material
|
||||
WHEN mc.item_type = 'product' THEN p.material
|
||||
ELSE NULL END AS material,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
|
||||
WHEN mc.item_type = 'product' THEN p.manufacturer
|
||||
ELSE NULL END AS manufacturer,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
|
||||
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
|
||||
ELSE NULL END AS surfaceTreatmentDesc,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
|
||||
WHEN mc.item_type = 'product' THEN p.zinc_layer
|
||||
ELSE NULL END AS zincLayer,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
|
||||
WHEN mc.item_type = 'product' THEN p.product_name
|
||||
ELSE NULL END AS item_name,
|
||||
CASE WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
|
||||
WHEN mc.item_type = 'product' THEN p.product_code
|
||||
ELSE NULL END AS item_code,
|
||||
mc.business_purpose, mc.trimming_requirement, mc.packaging_requirement,
|
||||
mc.quality_status, mc.packing_status, mc.length
|
||||
FROM wms_coil_warehouse_operation_log log
|
||||
LEFT JOIN wms_material_coil mc ON log.coil_id = mc.coil_id AND mc.del_flag = 0
|
||||
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
|
||||
LEFT JOIN wms_actual_warehouse aw ON log.actual_warehouse_id = aw.actual_warehouse_id
|
||||
LEFT JOIN wms_actual_warehouse aw2 ON mc.actual_warehouse_id = aw2.actual_warehouse_id
|
||||
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
|
||||
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
|
||||
<where>
|
||||
<if test="warehouseIds != null and warehouseIds.size() > 0">
|
||||
AND log.actual_warehouse_id IN
|
||||
<foreach collection="warehouseIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="operationType != null">
|
||||
AND log.operation_type = #{operationType}
|
||||
</if>
|
||||
<if test="inOutType != null">
|
||||
AND log.in_out_type = #{inOutType}
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
AND log.create_time >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND log.create_time <= #{endTime}
|
||||
</if>
|
||||
AND log.del_flag = 0
|
||||
</where>
|
||||
ORDER BY log.create_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user