瀏覽代碼

Merge branch 'usky-zyj' of uskycloud/usky-modules into server-165

James 1 年之前
父節點
當前提交
b59eb6c562

+ 75 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseBuildFacilityController.java

@@ -1,7 +1,16 @@
 package com.usky.iot.controller.web;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.BaseBuildFacility;
+import com.usky.iot.service.BaseBuildFacilityService;
+import com.usky.iot.service.vo.BaseBuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityResponeVO;
+import com.usky.iot.service.vo.FacilityDeviceStatusVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import org.springframework.stereotype.Controller;
 
@@ -13,9 +22,73 @@ import org.springframework.stereotype.Controller;
  * @author han
  * @since 2023-07-26
  */
-@Controller
+@RestController
 @RequestMapping("/baseBuildFacility")
 public class BaseBuildFacilityController {
+    @Autowired
+    private BaseBuildFacilityService baseBuildFacilityService;
 
+    /**
+     * 新增
+     * @param baseBuildFacility
+     * @return
+     */
+    @PostMapping
+    ApiResult<Void> add(@RequestBody BaseBuildFacility baseBuildFacility){
+        baseBuildFacilityService.add(baseBuildFacility);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param baseBuildFacility
+     * @return
+     */
+    @PutMapping
+    ApiResult<Void> update(@RequestBody BaseBuildFacility baseBuildFacility){
+        baseBuildFacilityService.update(baseBuildFacility);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    ApiResult<Void> remove(@PathVariable("id") Integer id){
+        baseBuildFacilityService.remove(id);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("page")
+    ApiResult<CommonPage<BaseBuildFacility>> page(@RequestBody BaseBuildFacilityRequestVO requestVO){
+        return ApiResult.success(baseBuildFacilityService.page(requestVO));
+    }
+
+    /**
+     * 建筑设施关联设备列表
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("deviceList")
+    ApiResult<CommonPage<BuildFacilityResponeVO>> deviceList(@RequestBody BuildFacilityRequestVO requestVO){
+        return ApiResult.success(baseBuildFacilityService.deviceList(requestVO));
+    }
+
+    /**
+     * 建筑设施设备绑定
+     * @return
+     */
+    @PostMapping("setStatus")
+    ApiResult<Void> setStatus(@RequestBody FacilityDeviceStatusVO statusVO){
+        baseBuildFacilityService.setStatus(statusVO);
+        return ApiResult.success();
+    }
 }
 

+ 25 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildFacility.java

@@ -1,11 +1,14 @@
 package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -29,6 +32,18 @@ public class BaseBuildFacility implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    /**
+     * 建筑Id
+     */
+    @TableField(exist = false)
+    private Integer buildId;
+
+    /**
+     * 建筑名称
+     */
+    @TableField(exist = false)
+    private String buildName;
+
     /**
      * 设施编号
      */
@@ -44,6 +59,12 @@ public class BaseBuildFacility implements Serializable {
      */
     private String facilityType;
 
+    /**
+     * 设施类型名称
+     */
+    @TableField(exist = false)
+    private String typeName;
+
     /**
      * 所属楼层
      */
@@ -126,5 +147,8 @@ public class BaseBuildFacility implements Serializable {
      */
     private Integer tenantId;
 
-
+    /**
+     * 建筑设施备注
+     */
+    private String facilityDesc;
 }

+ 4 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildFacilityMapper.java

@@ -1,7 +1,9 @@
 package com.usky.iot.mapper;
 
+import com.usky.iot.domain.BaseBuild;
 import com.usky.iot.domain.BaseBuildFacility;
 import com.usky.common.mybatis.core.CrudMapper;
+import com.usky.iot.domain.BaseBuildFacilityType;
 
 /**
  * <p>
@@ -12,5 +14,6 @@ import com.usky.common.mybatis.core.CrudMapper;
  * @since 2023-07-26
  */
 public interface BaseBuildFacilityMapper extends CrudMapper<BaseBuildFacility> {
-
+    BaseBuildFacilityType baseBuildFacilityTypeList(String facilityType);
+    BaseBuild getBuildName(Integer buildId);
 }

+ 17 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseBuildFacilityService.java

@@ -1,7 +1,13 @@
 package com.usky.iot.service;
 
+import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.BaseBuildFacility;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.BaseBuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityResponeVO;
+import com.usky.iot.service.vo.FacilityDeviceStatusVO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * <p>
@@ -13,4 +19,15 @@ import com.usky.common.mybatis.core.CrudService;
  */
 public interface BaseBuildFacilityService extends CrudService<BaseBuildFacility> {
 
+    void add(BaseBuildFacility baseBuildFacility);
+
+    void update(BaseBuildFacility baseBuildFacility);
+
+    void remove(Integer id);
+
+    CommonPage<BaseBuildFacility> page(BaseBuildFacilityRequestVO requestVO);
+
+    CommonPage<BuildFacilityResponeVO> deviceList(BuildFacilityRequestVO requestVO);
+
+    void setStatus(FacilityDeviceStatusVO statusVO);
 }

+ 200 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildFacilityServiceImpl.java

@@ -1,11 +1,34 @@
 package com.usky.iot.service.impl;
 
-import com.usky.iot.domain.BaseBuildFacility;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.*;
 import com.usky.iot.mapper.BaseBuildFacilityMapper;
-import com.usky.iot.service.BaseBuildFacilityService;
+import com.usky.iot.service.*;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.BaseBuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityRequestVO;
+import com.usky.iot.service.vo.BuildFacilityResponeVO;
+import com.usky.iot.service.vo.FacilityDeviceStatusVO;
+import jdk.management.resource.internal.WrapInstrumentation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 建筑设施 服务实现类
@@ -16,5 +39,180 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class BaseBuildFacilityServiceImpl extends AbstractCrudService<BaseBuildFacilityMapper, BaseBuildFacility> implements BaseBuildFacilityService {
+    @Autowired
+    private BaseBuildFacilityRelateService baseBuildFacilityRelateService;
+//
+//    @Autowired
+//    private BaseBuildService baseBuildService;
+
+    @Autowired
+    private DmpDeviceInfoService dmpDeviceInfoService;
+
+    @Autowired
+    private DmpDeviceTypeService dmpDeviceTypeService;
+
+    @Override
+    public void add(BaseBuildFacility baseBuildFacility){
+        baseBuildFacility.setFacilityNum("jzss-"+new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()));
+        baseBuildFacility.setTenantId(SecurityUtils.getTenantId());
+        baseBuildFacility.setCreateBy(SecurityUtils.getUsername());
+        baseBuildFacility.setCreateTime(LocalDateTime.now());
+        this.save(baseBuildFacility);
+
+        Integer id = baseBuildFacility.getId();
+        BaseBuildFacilityRelate relate = new BaseBuildFacilityRelate();
+        relate.setBuildId(baseBuildFacility.getBuildId());
+        relate.setFacilityId(id);
+        relate.setCreateBy(SecurityUtils.getUsername());
+        relate.setCreateTime(LocalDateTime.now());
+        baseBuildFacilityRelateService.save(relate);
+    }
+
+    @Override
+    public void update(BaseBuildFacility baseBuildFacility){
+        baseBuildFacility.setUpdateBy(SecurityUtils.getUsername());
+        baseBuildFacility.setUpdateTime(LocalDateTime.now());
+        this.updateById(baseBuildFacility);
+    }
+
+    @Override
+    public void remove(Integer id){
+        BaseBuildFacility one = this.getById(id);
+        Optional.ofNullable(one).orElseThrow(() -> new BusinessException("无记录"));
+
+        LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(BaseBuildFacilityRelate::getFacilityId,id);
+        BaseBuildFacilityRelate one1 = baseBuildFacilityRelateService.getOne(queryWrapper);
+        if(one1 != null){
+            baseBuildFacilityRelateService.removeById(one1.getId());
+        }
+
+        one.setDeleteFlag(1);
+        this.updateById(one);
+    }
+
+    @Override
+    public CommonPage<BaseBuildFacility> page(BaseBuildFacilityRequestVO requestVO){
+        List<BaseBuildFacility> list = new ArrayList<>();
+        LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseBuildFacility::getFacilityNum,requestVO.getFacilityNum())
+                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseBuildFacility::getFacilityName,requestVO.getFacilityName())
+                .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseBuildFacility::getFacilityType,requestVO.getFacilityType())
+                .eq(BaseBuildFacility::getDeleteFlag,0)
+                .orderByDesc(BaseBuildFacility::getId);
+        List<BaseBuildFacility> list1 = this.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list1)){
+            for(int i=0;i<list1.size();i++){
+                LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1.eq(BaseBuildFacilityRelate::getFacilityId,list1.get(i).getId());
+                BaseBuildFacilityRelate one = baseBuildFacilityRelateService.getOne(queryWrapper1);
+                if(one != null){
+                    BaseBuild one1 = baseMapper.getBuildName(one.getBuildId());
+                    if(one1 != null){
+                        list1.get(i).setBuildId(one1.getId());
+                        list1.get(i).setBuildName(one1.getBuildName());
+                    }
+
+                }
+                BaseBuildFacilityType typeOne = baseMapper.baseBuildFacilityTypeList(list1.get(i).getFacilityType());
+                list1.get(i).setTypeName(typeOne.getTypeName());
+            }
+        }
+        if(StringUtils.isNotBlank(requestVO.getBuildName())){
+            list = list1.stream().filter(m-> m.getBuildName().contains(requestVO.getBuildName())).collect(Collectors.toList());
+        }else{
+            if(list1.size() > 0){
+                for(int j=0;j<list1.size();j++){
+                    list.add(list1.get(j));
+                }
+            }
+        }
+        Integer total = 0;
+        if(list.size() > 0){
+            total = list.size();
+        }
+
+        Integer pageCurrent = requestVO.getCurrent();
+        Integer pageSize = requestVO.getSize();
+        Integer current = 0;
+        if(pageCurrent!=null && pageSize>0){
+            current = (pageCurrent-1)*pageSize;
+        }
+        List<BaseBuildFacility> records = list.stream().skip(current).limit(pageSize).collect(Collectors.toList());
+
+        return new CommonPage<>(records,total,pageSize,pageCurrent);
+    }
+
+    @Override
+    public CommonPage<BuildFacilityResponeVO> deviceList(BuildFacilityRequestVO requestVO){
+        List<BuildFacilityResponeVO> list = new ArrayList<>();
+
+        IPage<DmpDeviceInfo> page = new Page<>(requestVO.getCurrent(),requestVO.getSize());
+        LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(requestVO.getDeviceId()),DmpDeviceInfo::getDeviceId,requestVO.getDeviceId())
+                .eq(requestVO.getDeviceType() != null,DmpDeviceInfo::getDeviceType,requestVO.getDeviceType())
+                .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(DmpDeviceInfo::getDeleteFlag,0);
+        page = dmpDeviceInfoService.page(page,queryWrapper);
+        if(CollectionUtils.isNotEmpty(page.getRecords())){
+            for(int i=0;i<page.getRecords().size();i++){
+                BuildFacilityResponeVO responeVO = new BuildFacilityResponeVO();
+                responeVO.setBaseBuildFacilityId(requestVO.getBaseBuildFacilityId());
+
+                responeVO.setDeviceId(page.getRecords().get(i).getDeviceId());
+                responeVO.setDeviceName(page.getRecords().get(i).getDeviceName());
+
+                LambdaQueryWrapper<DmpDeviceType> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1.eq(DmpDeviceType::getTypeCode,page.getRecords().get(i).getDeviceType().toString());
+                DmpDeviceType one = dmpDeviceTypeService.getOne(queryWrapper1);
+                if(one != null){
+                    responeVO.setDeviceTypeName(one.getTypeName());
+                }
+
+                responeVO.setInstallAddress(page.getRecords().get(i).getInstallAddress());
+
+                if(page.getRecords().get(i).getDeviceId().equals(requestVO.getRelateDeviceId())){
+                    responeVO.setStatus(1);
+                }else{
+                    responeVO.setStatus(0);
+                }
+                list.add(responeVO);
+            }
+        }
+        return new CommonPage<>(list,page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
+    @Override
+    public void setStatus(FacilityDeviceStatusVO statusVO){
+        BaseBuildFacility baseBuildFacility = new BaseBuildFacility();
+
+        LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(BaseBuildFacility::getDeleteFlag,0)
+                .eq(BaseBuildFacility::getTenantId,SecurityUtils.getTenantId())
+                .eq(BaseBuildFacility::getId,statusVO.getBaseBuildFacilityId());
+        BaseBuildFacility one = this.getOne(queryWrapper);
+        if(statusVO.getStatus() == 1){
+            if(one.getDeviceId() != null && (""+one.getDeviceId()).length() > 1){
+                throw new BusinessException("绑定失败,该建筑设施已绑定设备");
+            }
+            baseBuildFacility.setId(one.getId());
+            baseBuildFacility.setDeviceId(statusVO.getDeviceId());
+        }else{
+            if(one == null){
+                throw new BusinessException("无记录");
+            }
+            baseBuildFacility.setId(one.getId());
+            baseBuildFacility.setDeviceId("0");
+        }
+        baseBuildFacility.setUpdateBy(SecurityUtils.getUsername());
+        baseBuildFacility.setUpdateTime(LocalDateTime.now());
+        this.updateById(baseBuildFacility);
+
+    }
 
 }
+
+
+
+
+

+ 4 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildServiceImpl.java

@@ -96,7 +96,8 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
     public List<BaseBuild> dataList(){
         LambdaQueryWrapper<BaseBuild> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(BaseBuild::getDeleteFlag,0)
-            .eq(BaseBuild::getTenantId,SecurityUtils.getTenantId());
+            .eq(BaseBuild::getTenantId,SecurityUtils.getTenantId())
+            .orderByDesc(BaseBuild::getId);
         List<BaseBuild> list = this.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list)){
             for(int i=0;i<list.size();i++){
@@ -171,9 +172,9 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
 
             baseBuild.setId(statusVO.getBuildId());
             baseBuild.setFacilityId(0);
-            baseBuild.setUpdateBy(SecurityUtils.getUsername());
-            baseBuild.setUpdateTime(LocalDateTime.now());
         }
+        baseBuild.setUpdateBy(SecurityUtils.getUsername());
+        baseBuild.setUpdateTime(LocalDateTime.now());
         this.updateById(baseBuild);
 
 

+ 36 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BaseBuildFacilityRequestVO.java

@@ -0,0 +1,36 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class BaseBuildFacilityRequestVO {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 建筑名称
+     */
+    private String buildName;
+
+    /**
+     * 建筑设施编号
+     */
+    private String facilityNum;
+
+    /**
+     * 设施名称
+     */
+    private String facilityName;
+
+    /**
+     * 设施类型编码
+     */
+    private String facilityType;
+}

+ 35 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BuildFacilityRequestVO.java

@@ -0,0 +1,35 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class BuildFacilityRequestVO {
+    /**
+     * 建筑设施表-id
+     */
+    private Integer baseBuildFacilityId;
+
+    /**
+     * 建筑设施表-设备ID
+     */
+    private String relateDeviceId;
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 设备信息表-设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 设备类型编码
+     */
+    private Integer deviceType;
+}

+ 36 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BuildFacilityResponeVO.java

@@ -0,0 +1,36 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class BuildFacilityResponeVO {
+    /**
+     * 建筑设施表-id
+     */
+    private Integer baseBuildFacilityId;
+
+    /**
+     * 设备Id
+     */
+    private String deviceId;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 设备类型名称
+     */
+    private String deviceTypeName;
+
+    /**
+     * 设备地址
+     */
+    private String installAddress;
+
+    /**
+     * 绑定状态(0 解绑,1 绑定)
+     */
+    private Integer status;
+}

+ 21 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/FacilityDeviceStatusVO.java

@@ -0,0 +1,21 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class FacilityDeviceStatusVO {
+    /**
+     * 建筑设施表-id
+     */
+    private Integer baseBuildFacilityId;
+
+    /**
+     * 设备Id
+     */
+    private String deviceId;
+
+    /**
+     * 绑定状态(0 解绑,1 绑定)
+     */
+    private Integer status;
+}

+ 20 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.xml

@@ -25,5 +25,25 @@
         <result column="dept_id" property="deptId" />
         <result column="tenant_id" property="tenantId" />
     </resultMap>
+    <select id="baseBuildFacilityTypeList" resultType="com.usky.iot.domain.BaseBuildFacilityType">
+        select
+            bbft.*
+        from base_build_facility_type bbft
+        <where>
+            <if test="1 == 1">
+                bbft.type_code = #{facilityType}
+            </if>
+        </where>
+    </select>
+    <select id="getBuildName" resultType="com.usky.iot.domain.BaseBuild">
+        select
+            bb.*
+        from base_build bb
+        <where>
+            <if test="1 == 1">
+                bb.id = #{buildId}
+            </if>
+        </where>
+    </select>
 
 </mapper>