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 @@