Browse Source

将epc由编码转化改为由Id转化

LinWuTai 1 year ago
parent
commit
3279943114

+ 7 - 8
ruoyi-admin/src/main/java/com/ruoyi/asset/domain/TbAssetInformation.java

@@ -4,6 +4,8 @@ import java.util.*;
 
 import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.asset.domain.dto.AssetEpcInfo;
 import com.ruoyi.common.utils.MyUtils;
@@ -254,8 +256,8 @@ public class TbAssetInformation extends BaseEntity
      * 设置epc相关信息
      */
     public void setEpcInfo() {
-        // 将编码转为16进制
-        String epc = HexUtil.encodeHexStr(number, CharsetUtil.CHARSET_UTF_8);
+        // 将编码转为16进制 id达一千亿才24位字符
+        String epc = HexUtil.encodeHexStr(String.valueOf(id), CharsetUtil.CHARSET_UTF_8);
         // epc补充位
         int epcReplenishLength = epc.length() % 4;
         int remainder = epcReplenishLength % 4;
@@ -266,10 +268,6 @@ public class TbAssetInformation extends BaseEntity
         // 将epc大写
         epc = epc.toUpperCase();
 
-        if (epc.length() > 24) {
-            throw new RuntimeException("资产编码转epc长度大于24位");
-        }
-
         setEpc(epc);
         setEpcReplenishLength(epcReplenishLength);
     }
@@ -285,7 +283,7 @@ public class TbAssetInformation extends BaseEntity
         String hexStr = HexUtil.decodeHexStr(epc);
         // 分割子编码
         String[] split = hexStr.split("-");
-        // 将资产编码转换为epc
+        // 将资产编码转换为epc split[0]=id
         epc = HexUtil.encodeHexStr(split[0], CharsetUtil.CHARSET_UTF_8);
 
         // epc补充位
@@ -326,8 +324,9 @@ public class TbAssetInformation extends BaseEntity
             String childNumberStr = number + "-" + i;
             assetEpcInfo.setNumber(childNumberStr);
 
+            String childIdStr = id + "-" + i;
             // 将编码转为16进制
-            String epc = HexUtil.encodeHexStr(childNumberStr, CharsetUtil.CHARSET_UTF_8);
+            String epc = HexUtil.encodeHexStr(childIdStr, CharsetUtil.CHARSET_UTF_8);
             // epc补充位
             int epcReplenishLength = epc.length() % 4;
             int remainder = epcReplenishLength % 4;

+ 2 - 32
ruoyi-admin/src/main/java/com/ruoyi/asset/service/impl/TbAssetInformationServiceImpl.java

@@ -144,8 +144,8 @@ public class TbAssetInformationServiceImpl implements ITbAssetInformationService
         if (StrUtil.isBlank(locationNumber)) {
             tbAssetInformation.setLocationNumber(null);
         }
+        // 根据Id设置Epc
         tbAssetInformation.setEpcInfo();
-        tbAssetInformation.setChildNumberInfo();
 
         return tbAssetInformationMapper.insertTbAssetInformation(tbAssetInformation);
     }
@@ -166,44 +166,14 @@ public class TbAssetInformationServiceImpl implements ITbAssetInformationService
         if (StrUtil.isBlank(locationNumber)) {
             tbAssetInformation.setLocationNumber(null);
         }
+        // 根据Id设置Epc
         tbAssetInformation.setEpcInfo();
-        tbAssetInformation.setChildNumberInfo();
 
         tbAssetInformation.setUpdateTime(DateUtils.getNowDate());
         return tbAssetInformationMapper.updateTbAssetInformation(tbAssetInformation);
     }
 
     /**
-     * 判断是否为16进制,并将传入编号所有英文大写
-     *
-     * @param number 编号
-     * @return 返回值
-     */
-    private String checkHNumber(String number) {
-        String regex="^[A-Fa-f0-9]+$";
-
-        if (StrUtil.isBlank(number)) {
-            throw new RuntimeException("编号不能为空");
-        }
-
-        // 删除字符串中前导的零
-        number = number.replaceFirst("^0+", "");
-
-        if (number.length() % 4 != 0) {
-            throw new RuntimeException("编号的长度必须为4的倍数");
-        }
-
-        // 大写英文
-        number = number.toUpperCase();
-
-        if (!number.matches(regex)) {
-            throw new RuntimeException("非正则表达式");
-        }
-
-        return number;
-    }
-
-    /**
      * 批量删除资产信息
      * 
      * @param ids 需要删除的资产信息主键

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/inventory/service/impl/TbAssetInventoryServiceImpl.java

@@ -195,7 +195,7 @@ public class TbAssetInventoryServiceImpl implements ITbAssetInventoryService
                 String nowDateTime = DateUtil.format(now, "yyyy年MM月dd日 HH:mm:ss");
                 inventory.setName(nowDateTime + "临时盘点任务");
                 inventory.setInventoryDepartment("100");
-                inventory.setInventoryBy("admin");
+                inventory.setInventoryBy("admin"); // TODO 这里是否非admin登录,无法看到该条数据
                 inventory.setInventoryDate(now);
 
                 StringBuilder locationStrIds = new StringBuilder();

+ 19 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/MyUtils.java

@@ -61,4 +61,23 @@ public class MyUtils {
             return false;
         }
     }
+
+    /**
+     * 判断是否为16进制,并将传入编号所有英文大写
+     *
+     * @param number 编号
+     * @return 返回值
+     */
+    public static boolean checkHexNumber(String number) {
+        String regex="^[A-Fa-f0-9]+$";
+
+        if (StrUtil.isBlank(number)) {
+            throw new RuntimeException("编号不能为空");
+        }
+
+        // 删除字符串中前导的零
+        number = number.replaceFirst("^0+", "");
+
+        return number.matches(regex);
+    }
 }

+ 13 - 33
ruoyi-ui/src/views/asset/information/index.vue

@@ -24,30 +24,20 @@
         </div>
       </el-form-item>
       <el-form-item label="EPC" prop="epc" v-if="isExist('epc')">
-        <el-input
-          v-model="queryParams.epc"
-          placeholder="请输入EPC"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.epc" placeholder="请输入EPC" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="开始使用日期" prop="startDate" v-if="isExist('开始使用日期')">
-        <el-input
-          v-model="queryParams.startDate"
-          placeholder="请输入开始使用日期"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.startDate" placeholder="请输入开始使用日期" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item v-if="isExist('责任人')" label="责任人" prop="responsiblePerson">
         <el-input v-model="queryParams.responsiblePerson" placeholder="请输入责任人" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item v-if="isExist('所属公司')"  label="所属公司" prop="corporation">
+      <el-form-item v-if="isExist('所属公司')" label="所属公司" prop="corporation">
         <div style="display: inline-block; width: 183px">
           <treeselect v-model="queryParams.corporation" :options="deptOptions" :normalizer="normalizer" placeholder="选择所属公司" />
         </div>
       </el-form-item>
-      <el-form-item v-if="isExist('管理部门')"  label="管理部门" prop="department">
+      <el-form-item v-if="isExist('管理部门')" label="管理部门" prop="department">
         <div style="display: inline-block; width: 183px">
           <treeselect v-model="queryParams.department" :options="deptOptions" :normalizer="normalizer" placeholder="选择管理部门" />
         </div>
@@ -205,12 +195,10 @@
       </el-col>
       <el-col :span="1.5">
         <el-dropdown @command="handleCommand" split-button type="warning" trigger="click" placement="bottom-start" size="mini" v-hasPermi="['asset:information:export']">
-          <span class="el-dropdown-link" @click="handleExport">
-            <i class="el-icon-download"></i>&nbsp;导出
-          </span>
+          <span class="el-dropdown-link" @click="handleExport"> <i class="el-icon-download"></i>&nbsp;导出 </span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item command="batch"><span style="padding:8px;font-size: 13px;letter-spacing: 2px;">批量导出</span></el-dropdown-item>
-            <el-dropdown-item command="all" divided><span style="padding:8px;font-size: 13px;letter-spacing: 2px;">全部导出</span></el-dropdown-item>
+            <el-dropdown-item command="batch"><span style="padding: 8px; font-size: 13px; letter-spacing: 2px">批量导出</span></el-dropdown-item>
+            <el-dropdown-item command="all" divided><span style="padding: 8px; font-size: 13px; letter-spacing: 2px">全部导出</span></el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
       </el-col>
@@ -242,7 +230,7 @@
       </el-table-column>
       <el-table-column label="所在位置" align="center" prop="locationName" width="120">
         <template slot-scope="scope">
-          <span>{{ (scope.row.ancestorLocationName ? scope.row.ancestorLocationName + "-" : "") +  (scope.row.parentLocationName ?  scope.row.parentLocationName + "-" : "") + scope.row.locationName }}</span>
+          <span>{{ (scope.row.ancestorLocationName ? scope.row.ancestorLocationName + '-' : '') + (scope.row.parentLocationName ? scope.row.parentLocationName + '-' : '') + scope.row.locationName }}</span>
         </template>
       </el-table-column>
       <el-table-column v-if="isExist('使用部门')" label="使用部门" align="center" prop="userDepartmentName">
@@ -253,7 +241,7 @@
       <el-table-column label="资产条码" v-if="isExist('资产条码')" align="center" prop="code" />
       <el-table-column label="EPC" align="center" prop="epc" v-if="isExist('epc')" width="180">
         <template slot-scope="scope">
-          <div>{{scope.row.epc}}<br/>&lceil;补位:{{scope.row.epcReplenishLength}}&rfloor;</div>
+          <div>{{ scope.row.epc }}<br />&lceil;补位:{{ scope.row.epcReplenishLength }}&rfloor;</div>
         </template>
       </el-table-column>
       <el-table-column v-if="isExist('管理部门')" label="管理部门" align="center">
@@ -345,12 +333,12 @@
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
 
     <!-- 添加或修改资产信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body @close="dialogColose">
       <el-form ref="form" :model="form" :rules="rules" label-width="130px">
         <el-row :gutter="10">
           <el-col :span="8">
             <el-form-item label="资产编号" prop="number">
-              <el-input v-model="form.number" placeholder="请输入资产编号" />
+              <el-input v-model="form.number" placeholder="请输入资产编号"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -575,9 +563,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <!-- <el-form-item  label="资产条码" prop="code">
-          <el-input v-model="form.code" placeholder="请输入资产条码" />
-        </el-form-item> -->
         <!-- <el-form-item label="epc" prop="epc">
           <el-input v-model="form.epc" placeholder="请输入EPC" />
         </el-form-item>
@@ -1127,12 +1112,7 @@ export default {
       )
     },
     handleAllExport() {
-      this.download(
-        'asset/information/allExport',
-        {
-        },
-        `information_${new Date().getTime()}.xlsx`
-      )
+      this.download('asset/information/allExport', {}, `information_${new Date().getTime()}.xlsx`)
     },
     handleCommand(command) {
       if (command === 'batch') {
@@ -1141,7 +1121,7 @@ export default {
       if (command === 'all') {
         this.handleAllExport()
       }
-    }
+    },
   },
 }
 </script>