From c84000059f3a49e558bc1b210a72a494ee5bfd79 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 24 Apr 2026 14:05:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E7=BC=93=E5=AD=98=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建钢卷缓存实体类WmsCoilCache,包含缓存ID、钢卷ID、JSON数据等字段 - 定义钢卷缓存服务接口IWmsCoilCacheService,提供查询、新增、修改、删除等操作方法 - 实现钢卷缓存服务业务逻辑WmsCoilCacheServiceImpl,包含分页查询和批量操作功能 - 开发钢卷缓存控制器WmsCoilCacheController,提供RESTful API接口 - 创建钢卷缓存映射器WmsCoilCacheMapper及对应的XML映射文件 - 添加钢卷缓存业务对象WmsCoilCacheBo和视图对象WmsCoilCacheVo - 实现按钢卷ID保存或更新缓存的功能,支持存在则覆盖、不存在则新增的逻辑 - 提供按钢卷ID查询缓存数据的专用接口 --- .../controller/WmsCoilCacheController.java | 117 +++++++++++++++ .../java/com/klp/domain/WmsCoilCache.java | 45 ++++++ .../com/klp/domain/bo/WmsCoilCacheBo.java | 41 ++++++ .../com/klp/domain/vo/WmsCoilCacheVo.java | 47 ++++++ .../com/klp/mapper/WmsCoilCacheMapper.java | 16 +++ .../com/klp/service/IWmsCoilCacheService.java | 59 ++++++++ .../service/impl/WmsCoilCacheServiceImpl.java | 135 ++++++++++++++++++ .../mapper/klp/WmsCoilCacheMapper.xml | 24 ++++ 8 files changed, 484 insertions(+) create mode 100644 klp-wms/src/main/java/com/klp/controller/WmsCoilCacheController.java create mode 100644 klp-wms/src/main/java/com/klp/domain/WmsCoilCache.java create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/WmsCoilCacheBo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/WmsCoilCacheVo.java create mode 100644 klp-wms/src/main/java/com/klp/mapper/WmsCoilCacheMapper.java create mode 100644 klp-wms/src/main/java/com/klp/service/IWmsCoilCacheService.java create mode 100644 klp-wms/src/main/java/com/klp/service/impl/WmsCoilCacheServiceImpl.java create mode 100644 klp-wms/src/main/resources/mapper/klp/WmsCoilCacheMapper.xml diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilCacheController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilCacheController.java new file mode 100644 index 00000000..804c0412 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilCacheController.java @@ -0,0 +1,117 @@ +package com.klp.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +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.WmsCoilCacheVo; +import com.klp.domain.bo.WmsCoilCacheBo; +import com.klp.service.IWmsCoilCacheService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 钢卷缓存 + * + * @author klp + * @date 2026-04-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/wms/coilCache") +public class WmsCoilCacheController extends BaseController { + + private final IWmsCoilCacheService iWmsCoilCacheService; + + /** + * 查询钢卷缓存列表 + */ + @GetMapping("/list") + public TableDataInfo list(WmsCoilCacheBo bo, PageQuery pageQuery) { + return iWmsCoilCacheService.queryPageList(bo, pageQuery); + } + + /** + * 导出钢卷缓存列表 + */ + @Log(title = "钢卷缓存", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(WmsCoilCacheBo bo, HttpServletResponse response) { + List list = iWmsCoilCacheService.queryList(bo); + ExcelUtil.exportExcel(list, "钢卷缓存", WmsCoilCacheVo.class, response); + } + + /** + * 获取钢卷缓存详细信息 + * + * @param cacheId 主键 + */ + @GetMapping("/{cacheId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long cacheId) { + return R.ok(iWmsCoilCacheService.queryById(cacheId)); + } + + /** + * 新增钢卷缓存 + */ + @Log(title = "钢卷缓存", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody WmsCoilCacheBo bo) { + return toAjax(iWmsCoilCacheService.insertByBo(bo)); + } + + /** + * 修改钢卷缓存 + */ + @Log(title = "钢卷缓存", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody WmsCoilCacheBo bo) { + return toAjax(iWmsCoilCacheService.updateByBo(bo)); + } + + /** + * 删除钢卷缓存 + * + * @param cacheIds 主键串 + */ + @Log(title = "钢卷缓存", businessType = BusinessType.DELETE) + @DeleteMapping("/{cacheIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] cacheIds) { + return toAjax(iWmsCoilCacheService.deleteWithValidByIds(Arrays.asList(cacheIds), true)); + } + + /** + * 保存或更新钢卷缓存(通过钢卷ID) + */ + @Log(title = "钢卷缓存", businessType = BusinessType.INSERT) + @PostMapping("/save") + public R saveCache(@RequestBody WmsCoilCacheBo bo) { + return toAjax(iWmsCoilCacheService.saveOrUpdateByCoilId(bo)); + } + + /** + * 获取钢卷缓存(通过钢卷ID) + */ + @GetMapping("/getByCoilId/{coilId}") + public R getCacheByCoilId(@NotNull(message = "钢卷ID不能为空") + @PathVariable Long coilId) { + return R.ok(iWmsCoilCacheService.queryByCoilId(coilId)); + } +} diff --git a/klp-wms/src/main/java/com/klp/domain/WmsCoilCache.java b/klp-wms/src/main/java/com/klp/domain/WmsCoilCache.java new file mode 100644 index 00000000..73d60607 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/WmsCoilCache.java @@ -0,0 +1,45 @@ +package com.klp.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 钢卷缓存对象 wms_coil_cache + * + * @author klp + * @date 2026-04-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("wms_coil_cache") +public class WmsCoilCache extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 钢卷缓存主键ID + */ + @TableId(value = "cache_id") + private Long cacheId; + /** + * 钢卷ID + */ + private Long coilId; + /** + * 钢卷JSON数据 + */ + private String coilJson; + /** + * 删除标识 0正常 2删除 + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilCacheBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilCacheBo.java new file mode 100644 index 00000000..43bac726 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilCacheBo.java @@ -0,0 +1,41 @@ +package com.klp.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 钢卷缓存业务对象 wms_coil_cache + * + * @author klp + * @date 2026-04-24 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class WmsCoilCacheBo extends BaseEntity { + + /** + * 钢卷缓存主键ID + */ + private Long cacheId; + + /** + * 钢卷ID + */ + private Long coilId; + + /** + * 钢卷JSON数据 + */ + private String coilJson; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilCacheVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilCacheVo.java new file mode 100644 index 00000000..3f603cc4 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilCacheVo.java @@ -0,0 +1,47 @@ +package com.klp.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.klp.common.annotation.ExcelDictFormat; +import com.klp.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 钢卷缓存视图对象 wms_coil_cache + * + * @author klp + * @date 2026-04-24 + */ +@Data +@ExcelIgnoreUnannotated +public class WmsCoilCacheVo { + + private static final long serialVersionUID = 1L; + + /** + * 钢卷缓存主键ID + */ + @ExcelProperty(value = "钢卷缓存主键ID") + private Long cacheId; + + /** + * 钢卷ID + */ + @ExcelProperty(value = "钢卷ID") + private Long coilId; + + /** + * 钢卷JSON数据 + */ + @ExcelProperty(value = "钢卷JSON数据") + private String coilJson; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsCoilCacheMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsCoilCacheMapper.java new file mode 100644 index 00000000..2089eb73 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilCacheMapper.java @@ -0,0 +1,16 @@ +package com.klp.mapper; + +import com.klp.domain.WmsCoilCache; +import com.klp.domain.vo.WmsCoilCacheVo; +import com.klp.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +/** + * 钢卷缓存Mapper接口 + * + * @author klp + * @date 2026-04-24 + */ +public interface WmsCoilCacheMapper extends BaseMapperPlus { + WmsCoilCacheVo selectVoByCoilId(@Param("coilId") Long coilId); +} diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilCacheService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilCacheService.java new file mode 100644 index 00000000..b6c20110 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilCacheService.java @@ -0,0 +1,59 @@ +package com.klp.service; + +import com.klp.domain.WmsCoilCache; +import com.klp.domain.vo.WmsCoilCacheVo; +import com.klp.domain.bo.WmsCoilCacheBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 钢卷缓存Service接口 + * + * @author klp + * @date 2026-04-24 + */ +public interface IWmsCoilCacheService { + + /** + * 查询钢卷缓存 + */ + WmsCoilCacheVo queryById(Long cacheId); + + /** + * 查询钢卷缓存列表 + */ + TableDataInfo queryPageList(WmsCoilCacheBo bo, PageQuery pageQuery); + + /** + * 查询钢卷缓存列表 + */ + List queryList(WmsCoilCacheBo bo); + + /** + * 新增钢卷缓存 + */ + Boolean insertByBo(WmsCoilCacheBo bo); + + /** + * 修改钢卷缓存 + */ + Boolean updateByBo(WmsCoilCacheBo bo); + + /** + * 校验并批量删除钢卷缓存信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 保存或更新钢卷缓存(通过钢卷ID,有则覆盖,无则新增) + */ + Boolean saveOrUpdateByCoilId(WmsCoilCacheBo bo); + + /** + * 获取钢卷缓存(通过钢卷ID) + */ + WmsCoilCacheVo queryByCoilId(Long coilId); +} diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilCacheServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilCacheServiceImpl.java new file mode 100644 index 00000000..7acda807 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilCacheServiceImpl.java @@ -0,0 +1,135 @@ +package com.klp.service.impl; + +import cn.hutool.core.bean.BeanUtil; +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.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.domain.bo.WmsCoilCacheBo; +import com.klp.domain.vo.WmsCoilCacheVo; +import com.klp.domain.WmsCoilCache; +import com.klp.mapper.WmsCoilCacheMapper; +import com.klp.service.IWmsCoilCacheService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 钢卷缓存Service业务层处理 + * + * @author klp + * @date 2026-04-24 + */ +@RequiredArgsConstructor +@Service +public class WmsCoilCacheServiceImpl implements IWmsCoilCacheService { + + private final WmsCoilCacheMapper baseMapper; + + /** + * 查询钢卷缓存 + */ + @Override + public WmsCoilCacheVo queryById(Long cacheId){ + return baseMapper.selectVoById(cacheId); + } + + /** + * 查询钢卷缓存列表 + */ + @Override + public TableDataInfo queryPageList(WmsCoilCacheBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询钢卷缓存列表 + */ + @Override + public List queryList(WmsCoilCacheBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WmsCoilCacheBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getCoilId() != null, WmsCoilCache::getCoilId, bo.getCoilId()); + lqw.eq(StringUtils.isNotBlank(bo.getCoilJson()), WmsCoilCache::getCoilJson, bo.getCoilJson()); + return lqw; + } + + /** + * 新增钢卷缓存 + */ + @Override + public Boolean insertByBo(WmsCoilCacheBo bo) { + WmsCoilCache add = BeanUtil.toBean(bo, WmsCoilCache.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setCacheId(add.getCacheId()); + } + return flag; + } + + /** + * 修改钢卷缓存 + */ + @Override + public Boolean updateByBo(WmsCoilCacheBo bo) { + WmsCoilCache update = BeanUtil.toBean(bo, WmsCoilCache.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(WmsCoilCache entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除钢卷缓存 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 保存或更新钢卷缓存(通过钢卷ID,有则覆盖,无则新增) + */ + @Override + public Boolean saveOrUpdateByCoilId(WmsCoilCacheBo bo) { + WmsCoilCacheVo exist = baseMapper.selectVoByCoilId(bo.getCoilId()); + if (exist != null) { + WmsCoilCache update = BeanUtil.toBean(bo, WmsCoilCache.class); + update.setCacheId(exist.getCacheId()); + return baseMapper.updateById(update) > 0; + } else { + WmsCoilCache add = BeanUtil.toBean(bo, WmsCoilCache.class); + validEntityBeforeSave(add); + return baseMapper.insert(add) > 0; + } + } + + /** + * 获取钢卷缓存(通过钢卷ID) + */ + @Override + public WmsCoilCacheVo queryByCoilId(Long coilId) { + return baseMapper.selectVoByCoilId(coilId); + } +} diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilCacheMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilCacheMapper.xml new file mode 100644 index 00000000..f73af7ec --- /dev/null +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilCacheMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + +