Sfoglia il codice sorgente

项目绑定设备编号生成

lengfaqiang 2 anni fa
parent
commit
77875f04ab

+ 2 - 0
slope-modules/slope-detection/src/main/java/com/sckw/slope/detection/dao/mysql/KwsDeviceMapper.java

@@ -60,4 +60,6 @@ public interface KwsDeviceMapper extends BaseMapper<KwsDevice> {
     List<Map<String, String>> selectListByModelType(@Param("modelType") String modelType,@Param("companyId") String companyId);
 
     KwsAlarmExportVO getDataByDeviceIdAndProjectId(@Param("deviceId") Long deviceId, @Param("projectId") String projectId);
+
+    String getMaxDeviceCodeAndSplit(@Param("start") Integer start, @Param("length") Integer length);
 }

+ 6 - 0
slope-modules/slope-detection/src/main/java/com/sckw/slope/detection/model/dos/mysql/KwsDevice.java

@@ -39,6 +39,12 @@ public class KwsDevice implements Serializable {
      */
     private String snCode;
 
+    /**
+     * 设备编码
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String deviceCode;
+
     private String snCodeFullName;
 
     /**

+ 29 - 7
slope-modules/slope-detection/src/main/java/com/sckw/slope/detection/service/ProjectService.java

@@ -141,6 +141,7 @@ public class ProjectService {
         project.setUpdateTime(now);
         project.setCompanyId(headerData.getCompanyId());
         project.setProjectType(projectAddDto.getProjectType());
+        project.setMountainId(projectAddDto.getMountainId());
         List<KwsProject> projectList = projectMapper.selectListByType(projectAddDto.getProjectType());
         if (projectList.size() > 99) {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, "当前类型项目已经增加上限!");
@@ -224,6 +225,7 @@ public class ProjectService {
         HeaderData headerData = commonService.getHeaderData(request);
         KwsProject project = new KwsProject();
         BeanUtils.copyProperties(projectAddDto, project);
+        project.setMountainId(projectAddDto.getMountainId());
         project.setId(Long.parseLong(projectAddDto.getId()));
         project.setStatus(NumberConstant.ZERO);
         LocalDateTime now = LocalDateTime.now();
@@ -334,6 +336,10 @@ public class ProjectService {
         return PageRes.build(info, list);
     }
 
+    @Autowired
+    KwsCompanyMapper companyMapper;
+
+
     @Transactional
     public HttpResult deviceBind(BindDevice bindDevice, HttpServletRequest request) {
         if (org.apache.commons.lang3.StringUtils.isBlank(bindDevice.getInstallTime())) {
@@ -342,7 +348,12 @@ public class ProjectService {
         HeaderData headerData = commonService.getHeaderData(request);
         Long projectId = Long.parseLong(bindDevice.getProjectId());
         KwsProject project = projectMapper.selectOne(new LambdaQueryWrapper<KwsProject>().eq(KwsProject::getId, projectId));
-        String companyId = project.getCompanyId();
+        String mountainId = project.getMountainId();
+        KwsCompany kwsCompany = companyMapper.selectByPrimaryKey(Long.parseLong(mountainId));
+        if (kwsCompany == null) {
+            log.error("projectId:{},mountainId:{}", projectId, mountainId);
+            throw new BusinessException("公司信息获取异常");
+        }
         List<Long> list = StringUtils.splitStrToList(bindDevice.getDeviceIds(), Long.class);
         String bindDeviceId = bindDevice.getBindDeviceId();
         //设备主从绑定
@@ -414,6 +425,14 @@ public class ProjectService {
         if (!CollectionUtils.isEmpty(list)) {
             list.forEach(id -> {
                 String level = "1";
+                String deviceCode = "";
+                String companyAllCode = kwsCompany.getCompanyAllCode();
+                String maxDeviceCode = deviceMapper.getMaxDeviceCodeAndSplit(15, 6);
+                if (org.apache.commons.lang3.StringUtils.isNotBlank(maxDeviceCode)) {
+                    deviceCode = companyAllCode + maxDeviceCode;
+                } else {
+                    deviceCode = companyAllCode + StringUtils.addZeroForNum("1", 6);
+                }
                 if (bindDeviceId != null) {
                     KwsDevice kwsDevice = deviceMapper.selectByPrimaryKey(Long.parseLong(bindDeviceId));
                     if (kwsDevice == null) {
@@ -424,12 +443,14 @@ public class ProjectService {
                     kwsDevice.setUpdateTime(LocalDateTime.now());
                     kwsDevice.setUpdateBy(headerData.getUpdateBy() == null ? null : Long.parseLong(headerData.getUpdateBy()));
                     level = "2";
+                    deviceMapper.updateById(kwsDevice);
                 }
                 KwsDevice kwsDevice = deviceMapper.selectByPrimaryKey(id);
                 deviceMapper.update(null, new LambdaUpdateWrapper<KwsDevice>()
                         .eq(KwsDevice::getId, id)
                         .set(KwsDevice::getRelevanceLevel, level)
                         .set(KwsDevice::getInstallTime, localDateTime)
+                        .set(KwsDevice::getDeviceCode, deviceCode)
                         .set(KwsDevice::getStatus, DeviceEnum.BE_CHECKING.getCode())
                         .set(KwsDevice::getOnline, 1)
                         .set(KwsDevice::getAlias, bindDevice.getAlias() == null ? kwsDevice.getName() : bindDevice.getAlias())
@@ -1313,6 +1334,7 @@ public class ProjectService {
                     .set(KwsDevice::getRelevanceLevel, 0)
                     .set(KwsDevice::getInstallTime, null)
                     .set(KwsDevice::getLogicAlt, null)
+                    .set(KwsDevice::getDeviceCode, null)
                     .set(KwsDevice::getLogicLat, null)
                     .set(KwsDevice::getLogicLng, null)
                     .set(KwsDevice::getStatus, DeviceEnum.NOT_IN_USE.getCode())
@@ -1381,7 +1403,7 @@ public class ProjectService {
         vo.setProjectTotal(count);
         int deviceCount = deviceMapper.selectCountByProject(projectId, companyId);
         vo.setDeviceTotal(deviceCount);
-        BigDecimal area=new BigDecimal("0.00");
+        BigDecimal area = new BigDecimal("0.00");
         LambdaQueryWrapper<KwsProject> projectLambdaQueryWrapper = new LambdaQueryWrapper<>();
         projectLambdaQueryWrapper.eq(KwsProject::getDelFlag, 0);
         if (org.apache.commons.lang3.StringUtils.isNotBlank(projectId)) {
@@ -1401,7 +1423,7 @@ public class ProjectService {
         queryWrapper.eq(KwsProjectArea::getDelFlag, 0);
         if (!CollectionUtils.isEmpty(projectIdList) && projectIdList.size() > 0) {
             queryWrapper.in(KwsProjectArea::getProjectId, projectIdList);
-             area = projectAreaMapper.selectList(queryWrapper).stream().map(KwsProjectArea::getArea).reduce(BigDecimal.ZERO,
+            area = projectAreaMapper.selectList(queryWrapper).stream().map(KwsProjectArea::getArea).reduce(BigDecimal.ZERO,
                     BigDecimal::add);
         }
         vo.setProjectTotalArea(area);
@@ -1469,12 +1491,12 @@ public class ProjectService {
         vo.setOneAlarmTotal(oneAlarmTotal);
         List<KwsAlarm> alarms = null;
         LambdaQueryWrapper<KwsAlarm> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(KwsAlarm::getDelFlag,0);
+        lambdaQueryWrapper.eq(KwsAlarm::getDelFlag, 0);
         if (org.apache.commons.lang3.StringUtils.isNotBlank(projectId)) {
-            lambdaQueryWrapper.eq(KwsAlarm::getProjectId,projectId);
+            lambdaQueryWrapper.eq(KwsAlarm::getProjectId, projectId);
         }
         if (org.apache.commons.lang3.StringUtils.isNotBlank(companyId)) {
-            lambdaQueryWrapper.eq(KwsAlarm::getCompanyId,companyId);
+            lambdaQueryWrapper.eq(KwsAlarm::getCompanyId, companyId);
         }
         alarms = alarmMapper.selectList(lambdaQueryWrapper);
         LambdaQueryWrapper<KwsAlarmDetail> lt = new LambdaQueryWrapper<KwsAlarmDetail>()
@@ -1486,7 +1508,7 @@ public class ProjectService {
         if (org.apache.commons.lang3.StringUtils.isNotBlank(companyId)) {
             lt.eq(KwsAlarmDetail::getCompanyId, Long.parseLong(companyId));
         }
-        if (alarms.size()>0 && (!CollectionUtils.isEmpty(alarms))) {
+        if (alarms.size() > 0 && (!CollectionUtils.isEmpty(alarms))) {
             lt.in(KwsAlarmDetail::getAlarmId, alarms.stream().map(KwsAlarm::getId).distinct().collect(Collectors.toList()));
         }
         List<KwsAlarmDetail> kwsAlarms = alarmDetailMapper.selectList(lt

+ 3 - 1
slope-modules/slope-detection/src/main/resources/mapper/mysql/KwsCompanyMapper.xml

@@ -8,6 +8,8 @@
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="type" jdbcType="VARCHAR" property="type" />
     <result column="code" jdbcType="VARCHAR" property="code" />
+    <result column="company_code" jdbcType="VARCHAR" property="companyCode" />
+    <result column="company_all_code" jdbcType="VARCHAR" property="companyAllCode" />
     <result column="address" jdbcType="VARCHAR" property="address" />
     <result column="phone" jdbcType="VARCHAR" property="phone" />
     <result column="fence" jdbcType="VARCHAR" property="fence" />
@@ -25,7 +27,7 @@
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, `name`, `type`, code, address, phone, fence, person, person_mobile, platform_name, 
-    platform_address, `status`, create_by, create_time, update_by, update_time, del_flag
+    platform_address, `status`, create_by, create_time, update_by, update_time, del_flag,company_code,company_all_code
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->

+ 6 - 1
slope-modules/slope-detection/src/main/resources/mapper/mysql/KwsDeviceMapper.xml

@@ -9,6 +9,7 @@
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="alias" jdbcType="VARCHAR" property="alias" />
     <result column="sn_code" jdbcType="VARCHAR" property="snCode" />
+    <result column="device_code" jdbcType="VARCHAR" property="deviceCode" />
     <result column="sn_code_full_name" jdbcType="VARCHAR" property="snCodeFullName" />
     <result column="model_id" jdbcType="BIGINT" property="modelId" />
     <result column="mountain_id" jdbcType="VARCHAR" property="mountainId" />
@@ -30,7 +31,7 @@
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
     id, `attribute`, `name`, `alias`, sn_code, model_id, valid_time, secret_key, inter_face,relevance_level,sn_code_full_name,
-    remark, `status`, create_by, create_time, update_by, update_time, del_flag,mountain_id,related,check_time,online,install_time
+    remark, `status`, create_by, create_time, update_by, update_time, del_flag,mountain_id,related,check_time,online,install_time,device_code
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
       <!--@mbg.generated-->
@@ -431,4 +432,8 @@
              b.`name` AS deviceName
           a.id as ,
   </select>
+
+  <select id="getMaxDeviceCodeAndSplit" resultType="java.lang.String">
+      SELECT max(SUBSTRING(device_code, #{start}, #{length})) FROM kws_device;
+    </select>
 </mapper>