fengxiang
2018-01-18 aba833c7e94483639995f269aa00954e0bf4ade3
设备管理
1 files added
9 files modified
208 ■■■■ changed files
src/main/java/com/moral/common/json/BooleanValueFilter.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/common/util/RedisUtils.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/DeviceController.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/Device.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/DeviceMapper.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java 7 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/DeviceService.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/DeviceServiceImpl.java 47 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/DeviceMapper.xml 90 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/MonitorPointMapper.xml 2 ●●● patch | view | raw | blame | history
src/main/java/com/moral/common/json/BooleanValueFilter.java
@@ -1,7 +1,9 @@
package com.moral.common.json;
import com.alibaba.fastjson.serializer.ValueFilter;
import org.springframework.stereotype.Component;
@Component
public class BooleanValueFilter implements ValueFilter{
    @Override
    public Object process(Object object, String propertyName, Object propertyValue) {
src/main/java/com/moral/common/util/RedisUtils.java
@@ -23,7 +23,8 @@
    }
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private BooleanValueFilter booleanValueFilter;
    /**
     * 批量删除对应的value
     *
@@ -177,7 +178,7 @@
        boolean result = false;
        try {
            if(value!=null&&!(value instanceof String)) {
                value = JSON.toJSONString(value,new BooleanValueFilter());
                value = JSON.toJSONString(value,booleanValueFilter);
            }
            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
            operations.set(key, value);
src/main/java/com/moral/controller/DeviceController.java
New file
@@ -0,0 +1,26 @@
package com.moral.controller;
import com.moral.common.bean.PageBean;
import com.moral.common.bean.ResultBean;
import com.moral.service.DeviceService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("device")
@CrossOrigin(origins = "*", maxAge = 3600)
public class DeviceController {
    @Resource
    DeviceService deviceService;
    @GetMapping("page-list")
    public PageBean pageList(PageBean pageBean) {
        return deviceService.queryByPageBean(pageBean);
    }
    @PostMapping("delete-by-ids")
    public ResultBean deleteByIds(@RequestBody Integer [] ids){
        deviceService.deleteByIds(ids);
        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
        return resultBean;
    }
}
src/main/java/com/moral/entity/Device.java
@@ -3,6 +3,7 @@
import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Transient;
import lombok.Data;
@@ -72,7 +73,7 @@
     * @mbggenerated  Wed Nov 29 16:17:59 CST 2017
     */
    private Integer deviceVersionId;
    private String isDelete;
    /**
     * Sets the uid.
     *
@@ -100,14 +101,7 @@
        return name;
    }
    /**
     * Sets the monitorpoint.
     *
     * @param monitorpoint the new monitorpoint
     */
    public void setMonitorpoint(Integer monitorpoint) {
        this.monitorPointId = monitorpoint;
    }
    /**
     * Gets the status.
@@ -117,6 +111,10 @@
    public String getStatus() {
        return state;
    }
    @Transient
    private OperateUser operateUser;
    @Transient
    private DeviceVersion deviceVersion;
    @Transient
    private MonitorPoint monitorPoint;
}
src/main/java/com/moral/mapper/DeviceMapper.java
@@ -7,10 +7,11 @@
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.Device;
import tk.mybatis.mapper.entity.Example;
public interface DeviceMapper extends BaseMapper<Device>{
    List<Map<String, Object>> getDeviceStatesByAccount(Map<String, Object> parameters);
    List<Device>  selectWithRelationData(Example example);
    List<Map<String, Object>> getSensorsByDevice(@Param("mac")String mac);
}
src/main/java/com/moral/mapper/type/AlarmConfigValueHandle.java
@@ -14,6 +14,8 @@
import com.alibaba.fastjson.JSON;
import javax.annotation.Resource;
/**
 * @author fengxiang
 * @Time:2017年11月29日 上午9:38:51
@@ -22,7 +24,8 @@
@MappedJdbcTypes({JdbcType.OTHER})
@MappedTypes({AlarmConfigValue.class})
public class AlarmConfigValueHandle extends BaseTypeHandler<AlarmConfigValue> {
    @Resource
    private BooleanValueFilter booleanValueFilter;
    @Override
    public AlarmConfigValue getNullableResult(ResultSet resultSet, String s) throws SQLException {
        return JSON.parseObject(resultSet.getString(s),AlarmConfigValue.class);
@@ -41,7 +44,7 @@
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, AlarmConfigValue alarmConfigValue, JdbcType jdbcType)
            throws SQLException {
        preparedStatement.setString(i,JSON.toJSONString(alarmConfigValue,new BooleanValueFilter()));
        preparedStatement.setString(i,JSON.toJSONString(alarmConfigValue,booleanValueFilter));
    }
}
src/main/java/com/moral/service/DeviceService.java
@@ -2,7 +2,7 @@
import java.util.List;
import java.util.Map;
import com.moral.common.bean.PageBean;
import com.moral.entity.Device;
public interface DeviceService {
@@ -16,4 +16,8 @@
    List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize);
    Device getDeviceByMac(String mac);
    PageBean queryByPageBean(PageBean pageBean);
    void deleteByIds(Integer[] ids);
}
src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,12 +1,12 @@
package com.moral.service.impl;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import javax.annotation.Resource;
import com.moral.common.bean.Constants;
import com.moral.common.bean.PageBean;
import com.moral.common.util.ExampleUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@@ -17,6 +17,7 @@
import com.moral.mapper.DeviceMapper;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
import tk.mybatis.mapper.entity.Example;
@Service
public class DeviceServiceImpl implements DeviceService {
@@ -26,7 +27,7 @@
    @Resource
    private AccountService accountService;
    private Class ENTITY_CLASS = Device.class;
    @Override
    public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
        ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
@@ -73,6 +74,7 @@
        if (ObjectUtils.isEmpty(queryDevice)) {
            device.setCreateTime(operateDate);
            device.setState("4");
            device.setIsDelete(Constants.IS_DELETE_FALSE);
            deviceMapper.insertSelective(device);
        }else {
            device.setId(queryDevice.getId());
@@ -99,4 +101,39 @@
        return device;
    }
    @Override
    public PageBean queryByPageBean(PageBean pageBean) {
        Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
        List<Example.Criteria> criteriaList = example.getOredCriteria();
        if(criteriaList!=null&&criteriaList.size()>0){
            for(Example.Criteria cri : criteriaList){
                cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
            }
        }else {
            example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
        }
        if(pageBean.getPageSize()>0){
            PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
        }
        List<Device> organizationList = deviceMapper.selectWithRelationData(example);
        return new PageBean(organizationList);
    }
    @Override
    public void deleteByIds(Integer[] ids) {
        Device device = new Device();
        device.setIsDelete(Constants.IS_DELETE_TRUE);
        if(ids!=null&&ids.length>0){
            if(ids.length==1){
                device.setId(ids[0]);
                deviceMapper.updateByPrimaryKeySelective(device);
            }else{
                Example example = new Example(ENTITY_CLASS);
                example.or().andIn("id", Arrays.asList(ids));
                deviceMapper.updateByExampleSelective(device,example);
            }
        }
    }
}
src/main/resources/mapper/DeviceMapper.xml
@@ -1,7 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.mapper.DeviceMapper">
     <select id="getDeviceStatesByAccount" resultType="map">
  <resultMap id="BaseResultMap" type="com.moral.entity.Device">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="address" jdbcType="VARCHAR" property="address" />
    <result column="longitude" jdbcType="REAL" property="longitude" />
    <result column="latitude" jdbcType="REAL" property="latitude" />
    <result column="mac" jdbcType="VARCHAR" property="mac" />
    <result column="operate_user_id" jdbcType="INTEGER" property="operateUserId" />
    <result column="state" jdbcType="CHAR" property="state" />
    <result column="is_delete" jdbcType="CHAR" property="isDelete" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="install_time" jdbcType="TIMESTAMP" property="installTime" />
    <result column="monitor_point_id" jdbcType="INTEGER" property="monitorPointId" />
    <result column="device_version_id" jdbcType="INTEGER" property="deviceVersionId" />
      <association property="operateUser" javaType="com.moral.entity.OperateUser">
          <result column="operate_user_id" property="id" jdbcType="INTEGER" />
          <result column="operate_user_name" property="name" jdbcType="VARCHAR" />
      </association>
      <association property="deviceVersion" javaType="com.moral.entity.DeviceVersion">
          <result column="device_version_id" property="id" jdbcType="INTEGER" />
          <result column="device_version_name" property="name" jdbcType="VARCHAR" />
      </association>
      <association property="monitorPoint" javaType="com.moral.entity.MonitorPoint">
          <result column="monitor_point_id" property="id" jdbcType="INTEGER" />
          <result column="monitor_point_name" property="name" jdbcType="VARCHAR" />
      </association>
  </resultMap>
    <sql id="Example_Where_Clause">
        <where>
            <foreach collection="oredCriteria" item="criteria" separator="or">
                <if test="criteria.valid">
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>
  <sql id="Base_Column_List">
    id, name, address, longitude, latitude, mac, operate_user_id, state, is_delete, create_time,
    install_time, monitor_point_id, device_version_id
  </sql>
  <select id="selectWithRelationData" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap">
    select
    dev.*,
    ouser.name as operate_user_name,
    dvn.name as device_version_name,
    mpt.name as monitor_point_name
    from device dev
    left join operate_user ouser on dev.operate_user_id = ouser.id
    left join device_version dvn on dev.device_version_id = dvn.id
    left join monitor_point mpt on dev.monitor_point_id = mpt.id
    where dev.id in (
      select id from device
      <if test="_parameter != null">
          <include refid="Example_Where_Clause" />
      </if>
      <if test="orderByClause != null">
          order by ${orderByClause}
      </if>
      )
  </select>
    <select id="getDeviceStatesByAccount" resultType="map">
        SELECT
            COUNT( d.state ) count,
            d.state 
@@ -12,13 +92,13 @@
        WHERE
            d.monitor_point_id = mp.id 
            AND mp.organization_id IN
            <foreach collection="orgIds" open="(" separator="," close=")" item="listItem">
            <foreach close=")" collection="orgIds" item="listItem" open="(" separator=",">
                #{listItem}
            </foreach>
        </if>
        GROUP BY d.state
    </select>
    <select id="getSensorsByDevice" resultType="map">
        SELECT
            s.`key`,
src/main/resources/mapper/MonitorPointMapper.xml
@@ -20,7 +20,7 @@
      <result column="area_name" property="areaName" jdbcType="VARCHAR" />
    </association>
      <association property="organization" javaType="com.moral.entity.Organization">
          <result column="organization_id" property="id" jdbcType="VARCHAR" />
          <result column="organization_id" property="id" jdbcType="INTEGER" />
          <result column="organization_name" property="name" jdbcType="VARCHAR" />
      </association>
  </resultMap>