diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java index 29599b04..dc575adb 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java @@ -2,6 +2,7 @@ package com.klp.controller; import java.util.List; import java.util.Arrays; +import java.util.Date; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; @@ -96,4 +97,37 @@ public class WmsCoilWarehouseOperationLogController extends BaseController { @PathVariable Long[] logIds) { return toAjax(iWmsCoilWarehouseOperationLogService.deleteWithValidByIds(Arrays.asList(logIds), true)); } + + /** + * 根据钢卷 ID、操作类型及出入库类型删除钢卷库区操作记录 + * + * @param coilId 钢卷 ID + * @param operationType 操作类型 + * @param inOutType 出入库类型 + */ + @Log(title = "钢卷库区操作记录", businessType = BusinessType.DELETE) + @DeleteMapping("/byCoilId") + public R removeByCoilId(@NotNull(message = "钢卷 ID 不能为空") + @RequestParam Long coilId, + @NotNull(message = "操作类型不能为空") + @RequestParam String operationType, + @NotNull(message = "出入库类型不能为空") + @RequestParam String inOutType) { + return toAjax(iWmsCoilWarehouseOperationLogService.deleteByCoilIdAndTypes(coilId, operationType, inOutType)); + } + + /** + * 根据二级库区ID和时间范围查询操作记录及钢卷信息 + * + * @param secondWarehouseId 二级库区ID + * @param startTime 开始时间 + * @param endTime 结束时间 + */ + @GetMapping("/byWarehouseAndTime") + public R> getByWarehouseAndTime( + @RequestParam Long secondWarehouseId, + @RequestParam(required = false) Date startTime, + @RequestParam(required = false) Date endTime) { + return R.ok(iWmsCoilWarehouseOperationLogService.queryBySecondWarehouseIdAndTimeRange(secondWarehouseId, startTime, endTime)); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilWarehouseOperationLogVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilWarehouseOperationLogVo.java index 68d17373..a6c7308e 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilWarehouseOperationLogVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilWarehouseOperationLogVo.java @@ -2,9 +2,12 @@ package com.klp.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; 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 lombok.Data; +import java.math.BigDecimal; +import java.util.Date; /** @@ -55,5 +58,11 @@ public class WmsCoilWarehouseOperationLogVo { @ExcelProperty(value = "备注") private String remark; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private WmsWarehouseVo warehouse; + + private WmsMaterialCoilVo coil; } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java index b8216f5c..07654977 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java @@ -6,7 +6,9 @@ import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; +import javax.validation.constraints.NotNull; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -46,4 +48,16 @@ public interface IWmsCoilWarehouseOperationLogService { * 校验并批量删除钢卷库区操作记录信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + boolean deleteByCoilIdAndTypes(@NotNull(message = "钢卷 ID 不能为空") Long coilId, @NotNull(message = "操作类型不能为空") String operationType, @NotNull(message = "出入库类型不能为空") String inOutType); + + /** + * 根据二级库区ID和时间范围查询操作记录及钢卷信息 + * + * @param secondWarehouseId 二级库区ID + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 操作记录列表(含钢卷信息和库区信息) + */ + List queryBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Date startTime, Date endTime); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java index d57b673f..2ca90b93 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java @@ -1,22 +1,30 @@ package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.domain.WmsMaterialCoil; +import com.klp.domain.bo.WmsMaterialCoilBo; +import com.klp.service.IWmsMaterialCoilService; 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.WmsMaterialCoilVo; +import com.klp.domain.vo.WmsWarehouseVo; import com.klp.domain.WmsCoilWarehouseOperationLog; +import com.klp.domain.WmsWarehouse; import com.klp.mapper.WmsCoilWarehouseOperationLogMapper; +import com.klp.mapper.WmsWarehouseMapper; +import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.service.IWmsCoilWarehouseOperationLogService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 钢卷库区操作记录Service业务层处理 @@ -29,6 +37,8 @@ import java.util.Collection; public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehouseOperationLogService { private final WmsCoilWarehouseOperationLogMapper baseMapper; + private final WmsWarehouseMapper wmsWarehouseMapper; + private final IWmsMaterialCoilService wmsMaterialCoilService; /** * 查询钢卷库区操作记录 @@ -108,4 +118,78 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous } return baseMapper.deleteBatchIds(ids) > 0; } + + @Override + public boolean deleteByCoilIdAndTypes(Long coilId, String operationType, String inOutType) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(coilId != null, WmsCoilWarehouseOperationLog::getCoilId, coilId); + lqw.eq(operationType != null, WmsCoilWarehouseOperationLog::getOperationType, operationType); + lqw.eq(inOutType != null, WmsCoilWarehouseOperationLog::getInOutType, inOutType); + return baseMapper.delete(lqw) > 0; + } + + @Override + public List queryBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Date startTime, Date endTime) { + Set warehouseIds = getAllChildWarehouseIds(secondWarehouseId); + if (warehouseIds.isEmpty()) { + return new ArrayList<>(); + } + + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(WmsCoilWarehouseOperationLog::getActualWarehouseId, warehouseIds); + lqw.eq(WmsCoilWarehouseOperationLog::getOperationType,1); + lqw.eq(WmsCoilWarehouseOperationLog::getInOutType,1); + lqw.ge(startTime != null, WmsCoilWarehouseOperationLog::getCreateTime, startTime); + lqw.le(endTime != null, WmsCoilWarehouseOperationLog::getCreateTime, endTime); + lqw.orderByDesc(WmsCoilWarehouseOperationLog::getCreateTime); + + List list = baseMapper.selectVoList(lqw); + + Set coilIds = list.stream() + .map(WmsCoilWarehouseOperationLogVo::getCoilId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + + Map coilMap = new HashMap<>(); + if (!coilIds.isEmpty()) { + WmsMaterialCoilBo bo = new WmsMaterialCoilBo(); + bo.setCoilIds(coilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); + List coils = wmsMaterialCoilService.queryList(bo); + for (WmsMaterialCoilVo coil : coils) { + coilMap.put(coil.getCoilId(), coil); + } + } + + + Map warehouseMap = new HashMap<>(); + if (!warehouseIds.isEmpty()) { + LambdaQueryWrapper warehouseQuery = Wrappers.lambdaQuery(); + warehouseQuery.in(WmsWarehouse::getWarehouseId, warehouseIds); + List warehouses = wmsWarehouseMapper.selectList(warehouseQuery); + for (WmsWarehouse warehouse : warehouses) { + WmsWarehouseVo vo = BeanUtil.toBean(warehouse, WmsWarehouseVo.class); + warehouseMap.put(warehouse.getWarehouseId(), vo); + } + } + + for (WmsCoilWarehouseOperationLogVo vo : list) { + vo.setCoil(coilMap.get(vo.getCoilId())); + vo.setWarehouse(warehouseMap.get(vo.getActualWarehouseId())); + } + + return list; + } + + private Set getAllChildWarehouseIds(Long parentId) { + Set result = new HashSet<>(); + result.add(parentId); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(WmsWarehouse::getParentId, parentId); + List children = wmsWarehouseMapper.selectList(lqw); + for (WmsWarehouse child : children) { + result.addAll(getAllChildWarehouseIds(child.getWarehouseId())); + } + return result; + } }