1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.iailab.module.data.dev.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.iailab.framework.common.constant.Constant;
import com.iailab.framework.common.page.PageData;
import com.iailab.framework.common.pojo.PageResult;
import com.iailab.framework.common.service.impl.BaseServiceImpl;
import com.iailab.framework.common.util.object.BeanUtils;
import com.iailab.framework.common.util.object.ConvertUtils;
import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrPageReqVO;
import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrSaveReqVO;
import com.iailab.module.data.dev.dahua.DHCapturePictureClient;
import com.iailab.module.data.dev.dahua.DHClientFactory;
import com.iailab.module.data.dev.dao.DevNvrDao;
import com.iailab.module.data.dev.dto.DevNvrDTO;
import com.iailab.module.data.dev.entity.DevNvrEntity;
import com.iailab.module.data.dev.service.DevNvrService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
 
/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年03月07日
 */
@Service
public class DevNvrServiceImpl extends BaseServiceImpl<DevNvrDao, DevNvrEntity> implements DevNvrService {
 
    @Resource
    private DevNvrDao devNvrDao;
 
    @Resource
    private DHClientFactory dhClientFactory;
 
    @Override
    public PageResult<DevNvrDTO> getPage(DevNvrPageReqVO pageReqVO) {
        PageResult<DevNvrEntity> pageResult = devNvrDao.selectPage(pageReqVO);
//        List<DevNvrEntity> list = pageResult.getList();
//        dhClientFactory.getNvrOnlineStatus(list);
        return BeanUtils.toBean(pageResult, DevNvrDTO.class);
    }
 
    @Override
    public List<DevNvrDTO> list(Map<String, Object> params) {
        QueryWrapper<DevNvrEntity> queryWrapper = getWrapper(params);
        queryWrapper.orderByDesc(Constant.CREATE_DATE);
        List<DevNvrEntity> list = baseDao.selectList(queryWrapper);
        return ConvertUtils.sourceToTarget(list, DevNvrDTO.class);
    }
 
    @Override
    public DevNvrDTO get(String id) {
        DevNvrEntity entity = baseDao.selectById(id);
 
        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
    }
 
    @Override
    public DevNvrDTO getByIp(String ip) {
        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("ip", ip);
        DevNvrEntity entity = baseDao.selectOne(wrapper);
 
        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
    }
 
    @Override
    public DevNvrDTO getByCode(String code) {
        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("code", code);
        DevNvrEntity entity = baseDao.selectOne(wrapper);
 
        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
    }
 
    private QueryWrapper<DevNvrEntity> getWrapper(Map<String, Object> params) {
        String code = (String) params.get("code");
        String location = (String) params.get("location");
        String nvrId = (String) params.get("nvrId");
        Integer status = params.get("status") == null ? null : Integer.parseInt(params.get("status").toString());
 
        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
        wrapper.like(StringUtils.isNotBlank(code), "code", code)
                .like(StringUtils.isNotBlank(location), "location", location)
                .eq(StringUtils.isNotBlank(nvrId), "nvr_id", nvrId)
                .eq(status != null, "status", status);
 
        return wrapper;
    }
 
    @Override
    public String save(DevNvrSaveReqVO saveReqVO) {
        DevNvrEntity entity = BeanUtils.toBean(saveReqVO, DevNvrEntity.class);
        entity.setCreateDate(new Date());
        insert(entity);
        return entity.getId();
    }
 
    @Override
    public String update(DevNvrSaveReqVO saveReqVO) {
        DevNvrEntity entity = BeanUtils.toBean(saveReqVO, DevNvrEntity.class);
        entity.setCreateDate(new Date());
        updateById(entity);
        return entity.getId();
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delete(Long id) {
        devNvrDao.deleteById(id);
    }
 
//    @Override
//    public Long cheack(DevNvrDTO dto) {
//        Long id = dto.getId();
//        String code = dto.getCode();
//        String name = dto.getName();
//        QueryWrapper<DevNvrEntity> queryWrapper = new QueryWrapper<>();
//        queryWrapper.ne(StringUtils.isNotBlank(id.toString()), "id", id);
//        queryWrapper.and(wrapper -> wrapper.eq("code", code).or().
//                eq(StringUtils.isNotBlank(name), "name", name));
//        return baseDao.selectCount(queryWrapper);
//    }
 
    @Override
    public void setStatus(String ip, Integer status) {
        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("ip", ip);
        DevNvrEntity entity = new DevNvrEntity();
        entity.setIp(ip);
        entity.setStatus(status);
        baseDao.update(entity, wrapper);
    }
}