fengxiang
2018-05-07 46670e34c1105649da6091a0829b9451c9fe5b37
Merge remote-tracking branch 'origin/master'
7 files added
12 files modified
653 ■■■■ changed files
lib/taobao-sdk-java-auto_1455552377940-20160607.jar patch | view | raw | blame | history
pom.xml 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/MobileController.java 114 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ReportController.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/AlarmDaily.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/OperateUser.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/AlarmDailyMapper.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/AlarmMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/AlarmDailyService.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/AlarmService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/OperateUserService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java 122 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/AlarmServiceImpl.java 67 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/OperateUserServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/util/MessageUtils.java 43 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/AlarmDailyMapper.xml 97 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/AlarmMapper.xml 74 ●●●●● patch | view | raw | blame | history
lib/taobao-sdk-java-auto_1455552377940-20160607.jar
Binary files differ
pom.xml
@@ -177,6 +177,15 @@
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
        </dependency>
        <!-- 阿里大于 -->
        <dependency>
            <groupId>com.taobao.api</groupId>
            <artifactId>taobao-sdk</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1455552377940-20160607.jar</systemPath>
        </dependency>
    </dependencies>
    <build>
@@ -204,6 +213,24 @@
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                            <includeScope>system</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
src/main/java/com/moral/controller/MobileController.java
@@ -8,11 +8,11 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.moral.common.util.Crypto;
import com.moral.util.MessageUtils;
import com.taobao.api.ApiException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import com.moral.common.bean.AppData;
import com.moral.entity.Device;
@@ -55,7 +55,7 @@
     * @param password the password
     * @return the result bean
     */
    @GetMapping("accountlogin")
    @PostMapping("accountlogin")
    public AppData<OperateUser> mobileLogin(String username, String password) {
        OperateUser operateUser = operateUserService.mobileLogin(username,password);
        return new AppData<OperateUser>(operateUser); 
@@ -69,7 +69,7 @@
     * @param newpassword the newpassword
     * @return the result bean
     */
    @GetMapping("upPassword")
    @PostMapping("upPassword")
    public AppData<OperateUser> updatePassword(Integer uid, String password, String newpassword) {
        OperateUser operateUser = operateUserService.updatePassword(uid,password,newpassword);
        return new AppData<OperateUser>(operateUser); 
@@ -81,7 +81,7 @@
     * @param device the device
     * @return the result bean
     */
    @GetMapping("reportDevice")
    @PostMapping("reportDevice")
    public AppData<String> installDevice(Device device) {
        deviceService.saveOrUpdateDevice(device);
        return new AppData<String>("");
@@ -95,7 +95,7 @@
     * @param pageSize the page size
     * @return the install devices by operate user
     */
    @GetMapping("myRelease")
    @PostMapping("myRelease")
    public AppData<List<Device>> getInstallDevicesByOperateUser(@RequestParam(value="uid", required=true)Integer uid, 
            @RequestParam(defaultValue="0")Integer pageIndex, @RequestParam(defaultValue="0")Integer pageSize) {
        List<Device> devices = deviceService.getInstallDevicesByOperateUser(uid, pageIndex, pageSize);
@@ -108,7 +108,7 @@
     * @param mac the mac
     * @return the device by mac
     */
    @GetMapping("getEquInfoByMac")
    @PostMapping("getEquInfoByMac")
    public AppData<Device> getDeviceByMac(@RequestParam(value="mac", required=true)String mac) {
        Device device = deviceService.getDeviceByMac(mac);
        return new AppData<Device>(device);
@@ -120,7 +120,7 @@
     * @param request the area name
     * @return the monitor points by area name
     */
    @GetMapping("getMpointsByAreaName")
    @PostMapping("getMpointsByAreaName")
    public AppData<List<MonitorPoint>> getMonitorPointsByAreaName(HttpServletRequest request) {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsByAreaName(parameters);
@@ -133,10 +133,100 @@
     * @param request the area name
     * @return the organizations by area name
     */
    @GetMapping("getOrgsByAreaName")
    @PostMapping("getOrgsByAreaName")
    public AppData<List<Organization>> getOrganizationsByAreaName(HttpServletRequest request) {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<Organization> organizations = organizationService.getOrganizationsByAreaName(parameters);
        return new AppData<List<Organization>>(organizations);
    }
    /**
     * Send SMS
     *
     * @param mobile
     * @return
     */
    @PostMapping("sendSms")
    public AppData<String> sendSms(String mobile) {
        AppData apiData = new AppData();
        if (StringUtils.isBlank(mobile)){
            apiData.setErrno(1);
            apiData.setMessage("没有输入手机号码");
            apiData.setData("{}");
            return  apiData;
        }
        OperateUser user = operateUserService.getOperateUserByMobile(mobile);
        if (user==null){
            apiData.setErrno(1);
            apiData.setMessage("手机号没有关联用户");
            apiData.setData("{}");
            return  apiData;
        }
        //生成验证码
        int code = (int)((Math.random() * 9 + 1) * 100000);
        user.setCode(String.valueOf(code));
        operateUserService.updateOperateUser(user);
        //发送到手机
        try {
            int state = MessageUtils.sendMsg(mobile, String.valueOf(code));
            if(state==0){
                apiData.setErrno(0);
                apiData.setMessage("发送验证码成功");
                apiData.setData("{}");
                return  apiData;
            }
            if(state==1){
                apiData.setErrno(1);
                apiData.setMessage("发送验证码失败");
                apiData.setData("{}");
                return  apiData;
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
        return new AppData<String>("");
    }
    /**
     * Send SMS
     *
     * @param mobile
     * @return
     */
    @PostMapping("password")
    public AppData<String> password(String username, String password, String code){
        AppData apiData = new AppData();
        if (StringUtils.isBlank(code)){
            apiData.setErrno(1);
            apiData.setMessage("重置密码失败,没有输出验证码");
            apiData.setData("{}");
            return  apiData;
        }
        OperateUser user = operateUserService.getOperateUserByMobile(username);
        if (user==null){
            apiData.setErrno(1);
            apiData.setMessage("手机号没有关联用户");
            apiData.setData("{}");
            return  apiData;
        }
        if (user.getCode().equals(code)){
            user.setPassword(Crypto.md5(password));
            int new_code = (int)((Math.random() * 9 + 1) * 100000);
            user.setCode(String.valueOf(new_code));
            operateUserService.updateOperateUser(user);
            apiData.setErrno(0);
            apiData.setMessage("重置密码成功");
            apiData.setData("{}");
            return  apiData;
        } else {
            apiData.setErrno(1);
            apiData.setMessage("输入验证码不正确");
            apiData.setData("{}");
            return  apiData;
        }
    }
}
src/main/java/com/moral/controller/ReportController.java
@@ -21,7 +21,7 @@
import com.moral.common.bean.ResultBean;
import com.moral.entity.charts.LineChartCriteria;
import com.moral.service.AlarmService;
import com.moral.service.AlarmDailyService;
import com.moral.service.HistoryMinutelyService;
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -34,7 +34,7 @@
    private HistoryMinutelyService historyMinutelyService;
    @Resource
    private AlarmService alarmService;
    private AlarmDailyService alarmDailyService;
    
    @GetMapping("compare")
    public ResultBean<Map<String, List>> getCompareReport(HttpServletRequest request) throws Exception {
@@ -74,9 +74,17 @@
    @GetMapping("pie")
    public ResultBean<Map<String, Object>> getPieData(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        Map pieData = alarmService.getPieData(parameters);
        Map pieData = alarmDailyService.getPieData(parameters);
        
        return new ResultBean<Map<String, Object>>(pieData);
    }
    @GetMapping("alarm-year")
    public ResultBean<List<Integer>> getAlarmDataByYear(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<Integer> alarmDataByYear = alarmDailyService.getAlarmDataByYear(parameters);
        return new ResultBean<List<Integer>>(alarmDataByYear);
    }
}
src/main/java/com/moral/controller/ScreenController.java
@@ -7,9 +7,6 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -58,7 +55,7 @@
import com.moral.entity.alarm.AlarmSensorLevel;
import com.moral.service.AccountService;
import com.moral.service.AlarmConfigService;
import com.moral.service.AlarmService;
import com.moral.service.AlarmDailyService;
import com.moral.service.AreaService;
import com.moral.service.DeviceService;
import com.moral.service.HistoryMinutelyService;
@@ -116,7 +113,7 @@
    private String levelKey = "alarm_";
    @Resource
    private AlarmService alarmService;
    private AlarmDailyService alarmDailyService;
    /**
     * Screen login. 大屏登录
     * 
@@ -493,7 +490,7 @@
                parameters.remove("organizationId");
            }
        }
        Map pieData = alarmService.getPieData(parameters);
        Map pieData = alarmDailyService.getPieData(parameters);
        List<Map<String, Object>> list = (List<Map<String, Object>>) pieData.get(sensorKey);
        return new ResultBean<List<Map<String, Object>>>(list);
    }
src/main/java/com/moral/entity/AlarmDaily.java
New file
@@ -0,0 +1,35 @@
package com.moral.entity;
import java.util.Date;
import lombok.Data;
@Data
public class AlarmDaily {
    /**
     *
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column alarm.mac
     *
     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
     */
    private String mac;
    private Integer state;
    /**
     *
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column alarm.json
     *
     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
     */
    private String json;
    /**
     *
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database column alarm.time
     *
     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
     */
    private Date time;
}
src/main/java/com/moral/entity/OperateUser.java
@@ -30,7 +30,9 @@
    private Date createTime;
    private Date expireTime;
    private String code;
    public Integer getUid() {
        return id;
    }
src/main/java/com/moral/mapper/AlarmDailyMapper.java
New file
@@ -0,0 +1,15 @@
package com.moral.mapper;
import java.util.List;
import java.util.Map;
import com.moral.common.mapper.BaseMapper;
import com.moral.entity.AlarmDaily;
public interface AlarmDailyMapper extends BaseMapper<AlarmDaily> {
    List<Map<String, Object>> getAlarmData(Map<String, Object> parameters);
    List<Map<String, Object>> getAlarmDataByYear(Map<String, Object> parameters);
}
src/main/java/com/moral/mapper/AlarmMapper.java
@@ -10,6 +10,5 @@
public interface AlarmMapper extends BaseMapper<Alarm> {
    
    List<Map<String, Object>> getAlarmData(Map<String, Object> parameters);
    List<Map> countByTimes(@Param("start")Date start, @Param("end")Date end, @Param("format")String format);
}
src/main/java/com/moral/service/AlarmDailyService.java
New file
@@ -0,0 +1,13 @@
package com.moral.service;
import java.util.List;
import java.util.Map;
@SuppressWarnings("rawtypes")
public interface AlarmDailyService {
    Map getPieData(Map<String, Object> parameters);
    List<Integer> getAlarmDataByYear(Map<String, Object> parameters);
}
src/main/java/com/moral/service/AlarmService.java
@@ -1,16 +1,14 @@
package com.moral.service;
import com.moral.entity.charts.TimeUnits;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.moral.entity.charts.TimeUnits;
@SuppressWarnings("rawtypes")
public interface AlarmService {
    List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits);
    Map getPieData(Map<String, Object> parameters);
}
src/main/java/com/moral/service/OperateUserService.java
@@ -25,4 +25,6 @@
    Integer deleteOperateUsersByLogic(List<Integer> ids);
    PageBean queryByPageBean(PageBean pageBean);
    Integer updateOperateUser(OperateUser operateUser);
}
src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java
New file
@@ -0,0 +1,122 @@
package com.moral.service.impl;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import com.moral.mapper.AlarmDailyMapper;
import com.moral.mapper.SensorMapper;
import com.moral.service.AlarmDailyService;
import com.moral.service.HistoryMinutelyService;
@Service
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AlarmDailyServiceImpl implements AlarmDailyService {
    @Resource
    private AlarmDailyMapper alarmDailyMapper;
    @Resource
    private SensorMapper sensorMapper;
    @Resource
    private HistoryMinutelyService historyMinutelyService;
    @Override
    public Map getPieData(Map<String, Object> parameters) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            historyMinutelyService.convertQueryParam(parameters);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        List<Map<String, Object>> alarmDatas = alarmDailyMapper.getAlarmData(parameters);
        Object dimension = parameters.get("dimension");
        if ("monitorPoint".equals(dimension)) {
            for (Map<String, Object> alarmData : alarmDatas) {
                String name = alarmData.remove("name").toString();
                alarmData.remove("sum");
                for (Map.Entry<String, Object> entry : alarmData.entrySet()) {
                    String key = entry.getKey();
                    Object value = entry.getValue().toString();
                    if (!"0".equals(value)) {
                        List list;
                        Map<String, Object> map = new HashMap<String, Object>();
                        if (ObjectUtils.isEmpty(resultMap.get(key))) {
                            list = new ArrayList();
                        } else {
                            list = (List) resultMap.get(key);
                        }
                        map.put("name", name);
                        map.put("value", value);
                        list.add(map);
                        resultMap.put(key, list);
                    }
                }
            }
        } else {
            Map<String, Object> alarmData = alarmDatas.get(0);
            List<String> sensors = (List<String>) parameters.get("sensors");
            List list = new ArrayList();
            if (!ObjectUtils.isEmpty(alarmData)) {
                for (String key : alarmData.keySet()) {
                    for (String sensor : sensors) {
                        String[] split = sensor.split("-");
                        if (key.equals(split[0]) && !"0".equals(alarmData.get(key).toString())) {
                            Map<String, Object> map = new HashMap<String, Object>();
                            if (parameters.containsKey("description")) {
                                map.put("name", split[3]);
                            } else {
                                map.put("name", split[1]);
                            }
                            map.put("value", alarmData.get(key));
                            list.add(map);
                        }
                    }
                }
            }
            resultMap.put("list", list);
        }
        return resultMap;
    }
    @Override
    public List<Integer> getAlarmDataByYear(Map<String, Object> parameters) {
        LocalDate localDate = LocalDate.now();
        parameters.put("start", localDate.with(TemporalAdjusters.firstDayOfYear()));
        parameters.put("end", localDate.with(TemporalAdjusters.firstDayOfNextYear()));
        parameters.put("sensorKeys",
                sensorMapper.selectAll().stream().map(sensor -> sensor.getSensorKey()).collect(Collectors.toList()));
        List<Map<String, Object>> list = alarmDailyMapper.getAlarmDataByYear(parameters);
        Integer[] result = new Integer[12];
        for (int i = 0; i < result.length; i++) {
            if (ObjectUtils.isEmpty(list)) {
                break;
            }
            for (Map<String, Object> map : list) {
                Integer month = Integer.valueOf(map.get("time").toString().substring(5));
                if (i + 1 < month) {
                    break;
                } else if (i + 1 == month) {
                    result[i] = Integer.valueOf(map.get("sum").toString());
                    list.remove(map);
                    break;
                }
            }
        }
        return Arrays.asList(result);
    }
}
src/main/java/com/moral/service/impl/AlarmServiceImpl.java
@@ -1,20 +1,20 @@
package com.moral.service.impl;
import java.text.ParseException;
import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.moral.entity.charts.TimeUnits;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import com.moral.entity.charts.TimeUnits;
import com.moral.mapper.AlarmMapper;
import com.moral.service.AlarmService;
import com.moral.service.HistoryMinutelyService;
@Service
@SuppressWarnings({ "rawtypes", "unchecked" })
@SuppressWarnings({ "rawtypes" })
public class AlarmServiceImpl implements AlarmService {
    @Resource
@@ -33,63 +33,6 @@
        }
        return alarmMapper.countByTimes(start, end, format);
    }
    @Override
    public Map getPieData(Map<String, Object> parameters) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            historyMinutelyService.convertQueryParam(parameters);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        List<Map<String, Object>> alarmDatas = alarmMapper.getAlarmData(parameters);
        Object dimension = parameters.get("dimension");
        if ("monitorPoint".equals(dimension)) {
            for (Map<String, Object> alarmData : alarmDatas) {
                String name = alarmData.remove("name").toString();
                alarmData.remove("sum");
                for (Map.Entry<String, Object> entry : alarmData.entrySet()) {
                    String key = entry.getKey();
                    Object value = entry.getValue().toString();
                    if (!"0".equals(value)) {
                        List list;
                        Map<String, Object> map = new HashMap<String, Object>();
                        if (ObjectUtils.isEmpty(resultMap.get(key))) {
                            list = new ArrayList();
                        } else {
                            list = (List) resultMap.get(key);
                        }
                        map.put("name", name);
                        map.put("value", value);
                        list.add(map);
                        resultMap.put(key, list);
                    }
                }
            }
        } else {
            Map<String, Object> alarmData = alarmDatas.get(0);
            List<String> sensors = (List<String>) parameters.get("sensors");
            List list = new ArrayList();
            if (!ObjectUtils.isEmpty(alarmData)) {
                for (String key : alarmData.keySet()) {
                    for (String sensor : sensors) {
                        String[] split = sensor.split("-");
                        if (key.equals(split[0]) && !"0".equals(alarmData.get(key).toString())) {
                            Map<String, Object> map = new HashMap<String, Object>();
                            if (parameters.containsKey("description")) {
                                map.put("name", split[3]);
                            } else {
                                map.put("name", split[1]);
                            }
                            map.put("value", alarmData.get(key));
                            list.add(map);
                        }
                    }
                }
            }
            resultMap.put("list", list);
        }
        return resultMap;
    }
}
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -44,6 +44,7 @@
import com.moral.entity.charts.DataCondition;
import com.moral.entity.charts.LineChartCriteria;
import com.moral.entity.charts.TimePeriod;
import com.moral.mapper.AlarmDailyMapper;
import com.moral.mapper.AlarmMapper;
import com.moral.mapper.DeviceMapper;
import com.moral.mapper.HistoryMinutelyMapper;
@@ -64,7 +65,7 @@
    private SensorMapper sensorMapper;
    @Resource
    private AlarmMapper alarmMapper;
    private AlarmDailyMapper alarmDailyMapper;
    @Override
    public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) {
@@ -287,7 +288,7 @@
        Object type = parameters.get("type");
        if ("year".equals(type) || "month".equals(type)) {
            parameters.put("sensorKeys", Arrays.asList("e1", "e2", "e10", "e11", "e15", "e16"));
            resultMap.put("alarmData" + part, alarmMapper.getAlarmData(parameters).get(0));
            resultMap.put("alarmData" + part, alarmDailyMapper.getAlarmData(parameters).get(0));
        }
        return resultMap;
    }
src/main/java/com/moral/service/impl/OperateUserServiceImpl.java
@@ -130,4 +130,9 @@
    public PageBean queryByPageBean(PageBean pageBean) {
        return MyBatisBaseMapUtil.queryPage(operateUserMapper,pageBean,ENTITY_CLASS);
    }
    @Override
    public Integer updateOperateUser(OperateUser operateUser) {
        return operateUserMapper.updateByPrimaryKeySelective(operateUser);
    }
}
src/main/java/com/moral/util/MessageUtils.java
New file
@@ -0,0 +1,43 @@
package com.moral.util;
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.domain.BizResult;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MessageUtils {
    private static Logger logger = LoggerFactory.getLogger(MessageUtils.class);
    public static int sendMsg(String mobile,String code) throws ApiException {
        String url = "http://gw.api.taobao.com/router/rest";
        String appkey = "23531128";
        String secret = "b079269785183c5a7520da9b8047bb42";
        TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
        req.setExtend("");
        req.setSmsType("normal");
        req.setSmsFreeSignName("七星博士");
        //${address}发生警报,警报等级:${level},请马上处理。
        //req.setSmsParamString("{address:'" + "addre" + "',level:'" + 2 + "'}");
        req.setSmsParamString("{code:'" + code + "'}");
        req.setRecNum(mobile);
        req.setSmsTemplateCode("SMS_25781236");
        AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
        BizResult result = rsp.getResult();
        if (result == null) {
            logger.warn("短信报警通知失败" + rsp.getBody());
            return 1;
        }
        Boolean success = result.getSuccess();
        if (!success) {
            logger.warn("短信通知失败" + rsp.getBody());
            return 1;
        }
        return 0;
    }
}
src/main/resources/mapper/AlarmDailyMapper.xml
New file
@@ -0,0 +1,97 @@
<?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.AlarmDailyMapper">
    <select id="getAlarmData" resultType="java.util.LinkedHashMap">
        SELECT
            <if test="dimension=='monitorPoint'">
                `name`,
            </if>
            <choose>
                <when test="sensorKeys.size > 0">
                    <foreach collection="sensorKeys" separator="," item="sensorKey">
                        SUM( ${sensorKey} ) AS '${sensorKey}'
                    </foreach>
                    <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
                        SUM( ${sensorKey} )
                    </foreach>
                </when>
                <otherwise>
                    time
                </otherwise>
            </choose>
        FROM
            (
                SELECT
                    <if test="dimension=='monitorPoint'">
                        mp.`name`,
                    </if>
                    <choose>
                        <when test="sensorKeys.size > 0">
                            <foreach collection="sensorKeys" separator="," item="sensorKey">
                                CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
                            </foreach>
                        </when>
                        <otherwise>
                             h.time
                        </otherwise>
                    </choose>
                FROM
                    alarm_daily h,
                    device d,
                    monitor_point mp
                WHERE d.monitor_point_id = mp.id
                    AND h.mac = d.mac
                    AND h.time >= #{start}
                    AND h.time <![CDATA[<]]> #{end}
                    <if test="provinceCode != null">
                    AND mp.province_code = #{provinceCode}
                    </if>
                    <if test="cityCode != null">
                    AND mp.city_code = #{cityCode}
                    </if>
                    <if test="areaCode != null">
                    AND mp.area_code = #{areaCode}
                    </if>
                    <if test="monitorPointId != null">
                    AND mp.id =    #{monitorPointId}
                    </if>
                    <if test="organizationId != null">
                    AND mp.organization_id = #{organizationId}
                    </if>
                    <if test="mac != null">
                    AND d.mac =    #{mac}
                    </if>
                    <if test="level != null">
                    AND h.state = #{level}
                    </if>
                GROUP BY
                    <if test="dimension=='monitorPoint'">
                        mp.id,
                    </if>
                    h.time
            ) a
        <if test="dimension=='monitorPoint'">
            GROUP BY name
        </if>
    </select>
    <select id="getAlarmDataByYear" resultType="java.util.Map">
        SELECT
            DATE_FORMAT(h.time, '%Y-%m') AS 'time'
            <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
                COUNT(json -> '$.${sensorKey}')
            </foreach>
        FROM
            alarm_daily h
        WHERE
            h.time >= #{start}
            AND h.time <![CDATA[<]]> #{end}
            <if test="state != null">
            AND h.state = #{state}
            </if>
        GROUP BY
            DATE_FORMAT(h.time, '%Y-%m')
    </select>
</mapper>
src/main/resources/mapper/AlarmMapper.xml
@@ -1,80 +1,6 @@
<?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.AlarmMapper">
    <select id="getAlarmData" resultType="java.util.LinkedHashMap">
        SELECT
            <if test="dimension=='monitorPoint'">
                `name`,
            </if>
            <choose>
                <when test="sensorKeys.size > 0">
                    <foreach collection="sensorKeys" separator="," item="sensorKey">
                        SUM( ${sensorKey} ) AS '${sensorKey}'
                    </foreach>
                    <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
                        SUM( ${sensorKey} )
                    </foreach>
                </when>
                <otherwise>
                    time
                </otherwise>
            </choose>
        FROM
            (
                SELECT
                    <if test="dimension=='monitorPoint'">
                        mp.`name`,
                    </if>
                    <choose>
                        <when test="sensorKeys.size > 0">
                            <foreach collection="sensorKeys" separator="," item="sensorKey">
                                CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
                            </foreach>
                        </when>
                        <otherwise>
                             h.time
                        </otherwise>
                    </choose>
                FROM
                    alarm_daily h,
                    device d,
                    monitor_point mp
                WHERE d.monitor_point_id = mp.id
                    AND h.mac = d.mac
                    AND h.time >= #{start}
                    AND h.time <![CDATA[<]]> #{end}
                    <if test="provinceCode != null">
                    AND mp.province_code = #{provinceCode}
                    </if>
                    <if test="cityCode != null">
                    AND mp.city_code = #{cityCode}
                    </if>
                    <if test="areaCode != null">
                    AND mp.area_code = #{areaCode}
                    </if>
                    <if test="monitorPointId != null">
                    AND mp.id =    #{monitorPointId}
                    </if>
                    <if test="organizationId != null">
                    AND mp.organization_id = #{organizationId}
                    </if>
                    <if test="mac != null">
                    AND d.mac =    #{mac}
                    </if>
                    <if test="level != null">
                    AND h.state = #{level}
                    </if>
                GROUP BY
                    <if test="dimension=='monitorPoint'">
                        mp.id,
                    </if>
                    h.time
            ) a
        <if test="dimension=='monitorPoint'">
            GROUP BY name
        </if>
    </select>
    <select id="countByTimes"   resultType="java.util.Map">
        select
        <if test="format !=null">