From 5d17e05f3fc6fdbbc997c5b047f6164ac5d80bda Mon Sep 17 00:00:00 2001 From: yangk Date: Wed, 10 Jun 2026 14:50:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(asset):=20=E6=B7=BB=E5=8A=A0RFID=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E7=BB=91=E5=AE=9A=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AmsAssetMapper中新增selectBindableAmsAssetList方法用于查询可绑定资产 - 在AmsAssetService中实现可绑定资产列表查询功能 - 在AmsRfidTagController中添加绑定页面、资产选择页面和绑定接口 - 创建bind.html和selectAsset.html模板文件 - 添加RFID标签绑定相关的按钮和权限控制 - 实现绑定操作的安全验证和业务逻辑处理 - 添加相应的单元测试确保功能正确性 --- .../controller/AmsRfidTagController.java | 81 ++++++++++++++ .../ruoyi/asset/mapper/AmsAssetMapper.java | 10 ++ .../ruoyi/asset/service/IAmsAssetService.java | 8 ++ .../service/impl/AmsAssetServiceImpl.java | 9 ++ .../resources/mapper/asset/AmsAssetMapper.xml | 22 ++++ .../resources/templates/asset/tag/bind.html | 102 ++++++++++++++++++ .../templates/asset/tag/selectAsset.html | 102 ++++++++++++++++++ .../resources/templates/asset/tag/tag.html | 23 ++++ .../controller/AmsRfidTagControllerTest.java | 96 +++++++++++++++++ .../service/impl/AmsAssetServiceImplTest.java | 14 +++ 10 files changed, 467 insertions(+) create mode 100644 ruoyi-asset/src/main/resources/templates/asset/tag/bind.html create mode 100644 ruoyi-asset/src/main/resources/templates/asset/tag/selectAsset.html create mode 100644 ruoyi-asset/src/test/java/com/ruoyi/asset/controller/AmsRfidTagControllerTest.java diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsRfidTagController.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsRfidTagController.java index 36bb946..d56bb34 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsRfidTagController.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsRfidTagController.java @@ -12,10 +12,16 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.asset.domain.AmsAsset; import com.ruoyi.asset.domain.AmsRfidTag; +import com.ruoyi.asset.domain.RfidBindingContext; +import com.ruoyi.asset.service.IAmsAssetService; import com.ruoyi.asset.service.IAmsRfidTagService; +import com.ruoyi.asset.service.IRfidBindingService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; @@ -34,6 +40,12 @@ public class AmsRfidTagController extends BaseController @Autowired private IAmsRfidTagService amsRfidTagService; + @Autowired + private IAmsAssetService amsAssetService; + + @Autowired + private IRfidBindingService rfidBindingService; + @RequiresPermissions("asset:tag:view") @GetMapping() public String tag() @@ -169,6 +181,61 @@ public class AmsRfidTagController extends BaseController getSysUser().getUserName(), getLoginName())); } + /** + * 打开RFID标签绑定页面 + */ + @RequiresPermissions("asset:tag:bind") + @GetMapping("/bind/{tagId}") + public String bind(@PathVariable("tagId") Long tagId, ModelMap mmap) + { + AmsRfidTag amsRfidTag = requireExistingTag(tagId); + mmap.put("amsRfidTag", amsRfidTag); + return prefix + "/bind"; + } + + /** + * 打开可绑定资产选择页面 + */ + @RequiresPermissions("asset:tag:bind") + @GetMapping("/selectAsset") + public String selectAsset() + { + return prefix + "/selectAsset"; + } + + /** + * 查询可绑定RFID标签的资产 + */ + @RequiresPermissions("asset:tag:bind") + @PostMapping("/bindableAssetList") + @ResponseBody + public TableDataInfo bindableAssetList(AmsAsset amsAsset) + { + startPage(); + List list = amsAssetService.selectBindableAmsAssetList(amsAsset); + return getDataTable(list); + } + + /** + * Web后台绑定RFID标签 + */ + @RequiresPermissions("asset:tag:bind") + @Log(title = "RFID标签绑定", businessType = BusinessType.UPDATE) + @PostMapping("/bind") + @ResponseBody + public AjaxResult bindSave(Long tagId, String assetCode, String remark) + { + AmsRfidTag amsRfidTag = requireExistingTag(tagId); + RfidBindingContext context = new RfidBindingContext(); + context.setOperateUserId(getUserId()); + context.setOperateUserName(getSysUser().getUserName()); + context.setOperateLoginName(getLoginName()); + context.setRemark(remark); + // EPC始终从数据库读取,避免页面篡改后绑定到其他标签。 + rfidBindingService.bind(assetCode, amsRfidTag.getEpcCode(), context); + return success("RFID标签绑定成功"); + } + /** * 删除RFID标签 */ @@ -180,4 +247,18 @@ public class AmsRfidTagController extends BaseController { return toAjax(amsRfidTagService.deleteAmsRfidTagByTagIds(ids)); } + + private AmsRfidTag requireExistingTag(Long tagId) + { + if (StringUtils.isNull(tagId)) + { + throw new ServiceException("RFID标签ID不能为空"); + } + AmsRfidTag amsRfidTag = amsRfidTagService.selectAmsRfidTagByTagId(tagId); + if (StringUtils.isNull(amsRfidTag)) + { + throw new ServiceException("RFID标签不存在或已删除"); + } + return amsRfidTag; + } } diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/mapper/AmsAssetMapper.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/mapper/AmsAssetMapper.java index 217dbbf..76dc7f4 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/mapper/AmsAssetMapper.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/mapper/AmsAssetMapper.java @@ -45,6 +45,16 @@ public interface AmsAssetMapper */ public List selectAmsAssetList(AmsAsset amsAsset); + /** + * 查询可绑定RFID标签的资产列表 + * + * @param amsAsset 查询条件 + * @param disposedStatus 已报废状态 + * @return 可绑定资产集合 + */ + public List selectBindableAmsAssetList(@Param("asset") AmsAsset amsAsset, + @Param("disposedStatus") String disposedStatus); + /** * 校验资产编码是否唯一 * diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/IAmsAssetService.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/IAmsAssetService.java index 45377c4..d575646 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/IAmsAssetService.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/IAmsAssetService.java @@ -27,6 +27,14 @@ public interface IAmsAssetService */ public List selectAmsAssetList(AmsAsset amsAsset); + /** + * 查询可绑定RFID标签的资产列表 + * + * @param amsAsset 查询条件 + * @return 可绑定资产集合 + */ + public List selectBindableAmsAssetList(AmsAsset amsAsset); + /** * 校验资产编码是否唯一 * diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsAssetServiceImpl.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsAssetServiceImpl.java index e119f80..920a1e2 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsAssetServiceImpl.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsAssetServiceImpl.java @@ -89,6 +89,15 @@ public class AmsAssetServiceImpl implements IAmsAssetService return amsAssetMapper.selectAmsAssetList(amsAsset); } + /** + * 查询可绑定RFID标签的资产列表 + */ + @Override + public List selectBindableAmsAssetList(AmsAsset amsAsset) + { + return amsAssetMapper.selectBindableAmsAssetList(amsAsset, AssetStatus.DISPOSED); + } + /** * 校验资产编码是否唯一 * diff --git a/ruoyi-asset/src/main/resources/mapper/asset/AmsAssetMapper.xml b/ruoyi-asset/src/main/resources/mapper/asset/AmsAssetMapper.xml index ab9c6bd..b6478d6 100644 --- a/ruoyi-asset/src/main/resources/mapper/asset/AmsAssetMapper.xml +++ b/ruoyi-asset/src/main/resources/mapper/asset/AmsAssetMapper.xml @@ -84,6 +84,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and epc_code = #{epcCode} + + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + + + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + + + + + diff --git a/ruoyi-asset/src/main/resources/templates/asset/tag/selectAsset.html b/ruoyi-asset/src/main/resources/templates/asset/tag/selectAsset.html new file mode 100644 index 0000000..fe9c6b5 --- /dev/null +++ b/ruoyi-asset/src/main/resources/templates/asset/tag/selectAsset.html @@ -0,0 +1,102 @@ + + + + + + +
+
+
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + +  搜索 + + +  重置 + +
  • +
+
+
+
+
+
+
+
+
+ + + + diff --git a/ruoyi-asset/src/main/resources/templates/asset/tag/tag.html b/ruoyi-asset/src/main/resources/templates/asset/tag/tag.html index 0555a43..062b629 100644 --- a/ruoyi-asset/src/main/resources/templates/asset/tag/tag.html +++ b/ruoyi-asset/src/main/resources/templates/asset/tag/tag.html @@ -52,6 +52,9 @@ 修改 + + 绑定 + 作废 @@ -73,6 +76,7 @@