package com.moral.monitor.controller;
|
|
import java.sql.Connection;
|
import java.sql.DriverManager;
|
import java.sql.SQLException;
|
import java.sql.Statement;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.log4j.Logger;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.CrossOrigin;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import com.alibaba.fastjson.JSON;
|
import com.moral.monitor.entity.Equipment;
|
import com.moral.monitor.entity.EquipmentExample;
|
import com.moral.monitor.entity.MonitorPoint;
|
import com.moral.monitor.entity.MonitorPointExample;
|
import com.moral.monitor.entity.Organization;
|
import com.moral.monitor.entity.OrganizationExample;
|
import com.moral.monitor.entity.User;
|
import com.moral.monitor.entity.apientity.ApiEquipment;
|
import com.moral.monitor.entity.apientity.ApiEquipmentInfo;
|
import com.moral.monitor.entity.apientity.ApiUser;
|
import com.moral.monitor.entity.apientity.RepairQuery;
|
import com.moral.monitor.entity.apientity.Report;
|
import com.moral.monitor.listener.message.Captcha;
|
import com.moral.monitor.service.ApiService;
|
import com.moral.monitor.service.EquipmentService;
|
import com.moral.monitor.service.MonitorpointService;
|
import com.moral.monitor.service.OrganizationService;
|
import com.moral.monitor.util.ApiData;
|
import com.moral.monitor.util.Crypto;
|
import com.moral.monitor.util.DateConvert;
|
import com.taobao.api.ApiException;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
/**
|
* Created by a on 2017/4/24.
|
*/
|
@Controller
|
@CrossOrigin(origins = "*", maxAge = 3600)
|
public class ApiController {
|
private static Logger log = Logger.getLogger(ApiController.class);
|
@Resource
|
ApiService apiService;
|
//11终端采集
|
@RequestMapping(value = "reportDevice")
|
@ResponseBody
|
public ApiData reportDevice(HttpServletRequest request ,
|
@RequestParam(value ="uid") String uid,
|
@RequestParam(value ="device_name") String device_name,
|
@RequestParam(value ="address") String address,
|
@RequestParam(value ="longitude") String longitude,
|
@RequestParam(value ="latitude") String latitude,
|
@RequestParam(value ="mac") String mac,
|
@RequestParam(value ="monitorpoint") String monitorpoint,
|
@RequestParam(value ="ownerId") String ownerId
|
){
|
//插入或更新设备表信息
|
ApiData apiData = new ApiData();
|
if(StringUtils.isBlank(mac)){
|
apiData.setData("");
|
apiData.setMessage("MAC地址为空");
|
apiData.setErrno(0);
|
return apiData;
|
}
|
if (StringUtils.isBlank(longitude)){ longitude="0"; }
|
if (StringUtils.isBlank(latitude)) { latitude="0"; }
|
Equipment equipment =new Equipment();
|
equipment.setInstaller(uid);
|
equipment.setName(device_name);
|
equipment.setAddress(address);
|
equipment.setLongitude(Double.valueOf(longitude));
|
equipment.setLatitude(Double.valueOf(latitude));
|
equipment.setMac(mac);
|
equipment.setMonitorpoint(monitorpoint);
|
equipment.setOwnerId(ownerId);
|
//添加时间
|
equipment.setTime(new Date());
|
EquipmentExample example = new EquipmentExample();
|
example.or().andMacEqualTo(mac);
|
long count = equipmentService.queryCountByExample(example);
|
|
if (count==0){ //插入
|
equipmentService.insertRecord(equipment);
|
apiData.setData("");
|
apiData.setMessage("添加设备成功");
|
apiData.setErrno(0);
|
} else { //更新
|
apiService.updateFromequipmentBymac(device_name, address, longitude, latitude, uid, mac);
|
apiData.setData("");
|
equipmentService.updateByMac(equipment);
|
apiData.setMessage("更新设备成功");
|
apiData.setErrno(0);
|
|
/////////////////////////////////////////////////////////
|
// 更新 - 新版本后台数据库
|
updateLocation(device_name, address, mac, longitude, latitude);
|
/////////////////////////////////////////////////////////
|
}
|
return apiData;
|
}
|
|
public void updateLocation(String device, String address, String mac, String lng, String lat) {
|
Connection conn = null;
|
String sql;
|
String url = "jdbc:mysql://47.96.19.115:3306/monitor_db?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&user=root&password=xOlx8z9L7Pt6y9YI";
|
try {
|
Class.forName("com.mysql.jdbc.Driver");
|
conn = DriverManager.getConnection(url);
|
Statement stmt = conn.createStatement();
|
sql = "UPDATE device SET `name`='" + device + "', address='" + address + "', longitude='" + lng + "', latitude='" + lat + "' WHERE mac='" + mac + "'";
|
int result = stmt.executeUpdate(sql);
|
System.out.println("Update the location of the equipment: " + result);
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
conn.close();
|
} catch (SQLException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
//1登录
|
@RequestMapping(value = "accountlogin")
|
@ResponseBody
|
public ApiData login(String username, String password ){
|
|
ApiData apiData = new ApiData();
|
|
//查找用户
|
User user = apiService.selectFromuserBynameAndpassword(username, Crypto.md5(password));//username为mobile
|
if (user==null){
|
apiData.setErrno(1);
|
apiData.setMessage("登陆失败,账号或密码错误");
|
apiData.setData("{}");
|
return apiData;
|
|
}else {
|
ApiUser apiUser = new ApiUser();
|
|
apiUser.setUid(user.getId());
|
apiUser.setUsername(user.getName());
|
apiUser.setOrganization_name(user.getOrganization());
|
apiUser.setEmail(user.getEmail());
|
apiUser.setWeixin(user.getWeixin());
|
apiUser.setTel(user.getMobile());
|
apiUser.setUser_type(user.getUser_type());
|
apiUser.setCreate_time(DateConvert.dateConvert(user.getCreate_time()));
|
apiUser.setNickname(user.getNickname());
|
|
JSONObject json = JSONObject.fromObject(apiUser);
|
String strJson=json.toString();
|
|
apiData.setErrno(0);
|
apiData.setMessage("用户登录成功");
|
apiData.setData(strJson);
|
return apiData;
|
|
}
|
|
}
|
|
|
|
//2忘记密码短信接口
|
@RequestMapping(value = "sendSms")
|
@ResponseBody
|
public ApiData sendSms(String mobile){
|
ApiData apiData = new ApiData();
|
|
if (StringUtils.isBlank(mobile)){
|
apiData.setErrno(1);
|
apiData.setMessage("没有输入手机号码");
|
apiData.setData("{}");
|
return apiData;
|
}
|
|
//根据mobile 查找用户
|
User user = apiService.selectFromUserBymobile(mobile);
|
if (user==null){
|
apiData.setErrno(1);
|
apiData.setMessage("手机号没有关联用户");
|
apiData.setData("{}");
|
return apiData;
|
}
|
|
//生成验证码
|
int code = (int) ((Math.random() * 9 + 1) * 100000);
|
//保存或更新
|
apiService.updateusercode(mobile,String.valueOf(code));
|
//发送到手机
|
try {
|
int state = Captcha.captcha(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 null;
|
}
|
|
|
//3忘记密码手机修改密码
|
@RequestMapping(value = "password")
|
@ResponseBody
|
public ApiData password(String username,String password,String code){//username-->mobile
|
ApiData apiData = new ApiData();
|
|
if (StringUtils.isBlank(code)){
|
apiData.setErrno(1);
|
apiData.setMessage("重置密码失败,没有输出验证码");
|
apiData.setData("{}");
|
return apiData;
|
}
|
|
//根据mobile 查找用户
|
User user = apiService.selectFromUserBymobile(username);
|
if (user==null){
|
apiData.setErrno(1);
|
apiData.setMessage("重置密码失败,手机号没有关联用户");
|
apiData.setData("{}");
|
return apiData;
|
}
|
|
if (user.getCode().equals(code)){
|
apiService.updateuserByid(Crypto.md5(password),String.valueOf(user.getId()));
|
apiData.setErrno(0);
|
apiData.setMessage("重置密码成功");
|
apiData.setData("{}");
|
|
int rcode = (int) ((Math.random() * 9 + 1) * 100000);
|
apiService.updateusercode(username,String.valueOf(rcode));
|
|
return apiData;
|
}else {
|
apiData.setErrno(1);
|
apiData.setMessage("输入验证码不正确");
|
apiData.setData("{}");
|
return apiData;
|
}
|
|
}
|
|
|
|
|
//4修改密码
|
@RequestMapping(value = "upPassword")
|
@ResponseBody
|
public ApiData upPassword(String uid,String password,String newpassword){
|
ApiData apiData = new ApiData();
|
//根据uid 和 password 查找用户
|
User user = apiService.selectFromuserByidAndpassword(uid, Crypto.md5(password));
|
JSONObject jsonObject = JSONObject.fromObject(user);
|
String s = jsonObject.toString();
|
|
if (user!=null){
|
//更新password字段
|
apiService.updateuserByid(Crypto.md5(newpassword),uid);
|
apiData.setErrno(0);
|
apiData.setMessage("修密码改成功");
|
apiData.setData(s);
|
return apiData;
|
}
|
|
|
apiData.setMessage("旧密码错误修改密码失败");
|
apiData.setData(s);
|
apiData.setErrno(1);
|
|
return apiData;
|
}
|
|
|
//5我安装的设备(分页)
|
@RequestMapping(value = "myRelease")
|
@ResponseBody
|
public ApiData myRelease(String uid,String pageIndex,String pageSize){
|
ApiData apiData = new ApiData();
|
|
int pindex=Integer.parseInt(pageIndex);
|
int psize=Integer.parseInt(pageSize);
|
int index =(pindex-1)*psize;
|
List<Equipment> equipments = apiService.selectFromequipmentByinstaller(uid,index,psize);
|
|
if (equipments.size()==0){
|
JSONArray jsonArray1 = JSONArray.fromObject(equipments);
|
String s1 = jsonArray1.toString();
|
apiData.setData(s1);
|
apiData.setMessage("此安装人员没有安装的设备");
|
apiData.setErrno(0);
|
return apiData;
|
}
|
|
ArrayList<ApiEquipment> apiEquipments = new ArrayList<ApiEquipment>();
|
|
for(Equipment e: equipments){
|
ApiEquipment ae = new ApiEquipment();
|
ae.setId(e.getId());
|
ae.setDevice_name(e.getName());
|
ae.setMac(e.getMac());
|
ae.setStatus(e.getState());
|
// ae.setFei(e.get);
|
// ae.setCreate_time(DateConvert.dateConvert(e.getTime()));
|
apiEquipments.add(ae);
|
|
}
|
|
JSONArray jsonArray = JSONArray.fromObject(apiEquipments);
|
String s = jsonArray.toString();
|
|
apiData.setData(s);
|
apiData.setMessage("返回安装的设备");
|
apiData.setErrno(0);
|
|
return apiData;
|
}
|
|
|
|
|
|
//6我的运维设备,(分页条件 和 模糊搜索)
|
@RequestMapping(value = "myRepair")
|
@ResponseBody
|
public ApiData myRepair(RepairQuery repairQuery ){
|
ApiData apiData = new ApiData();
|
|
/* int index=Integer.parseInt(pageIndex);
|
int size=Integer.parseInt(pageSize);
|
int t=Integer.parseInt(type);*/
|
|
int pageIndex = repairQuery.getPageIndex();
|
int pageSize = repairQuery.getPageSize();
|
int index=(pageIndex-1)*pageSize;
|
repairQuery.setPageIndex(index);
|
|
|
List<Equipment> equipments = apiService.selectFromequipmentByrepairman(repairQuery);
|
|
if (equipments.size()==0){
|
JSONArray jsonArray = JSONArray.fromObject(equipments);
|
String s = jsonArray.toString();
|
apiData.setData(s);
|
apiData.setMessage("此运维人员没有运维的设备");
|
apiData.setErrno(0);
|
return apiData;
|
}
|
|
ArrayList<ApiEquipment> apiEquipments = new ArrayList<ApiEquipment>();
|
|
for(Equipment e: equipments){
|
ApiEquipment ae = new ApiEquipment();
|
ae.setId(e.getId());
|
ae.setDevice_name(e.getName());
|
ae.setMac(e.getMac());
|
ae.setStatus(e.getState());
|
// ae.setFei(e.getFei());
|
ae.setCreate_time(DateConvert.dateConvert(e.getTime()));
|
apiEquipments.add(ae);
|
|
}
|
|
JSONArray jsonArray = JSONArray.fromObject(apiEquipments);
|
String s = jsonArray.toString();
|
|
apiData.setData(s);
|
apiData.setMessage("返回运维的设备");
|
apiData.setErrno(0);
|
|
return apiData;
|
}
|
|
|
|
//7客户的设备(分页)
|
|
|
//8、设备详情,暂时没有客户方面的信息
|
@RequestMapping(value = "deviceInfo")
|
@ResponseBody
|
public ApiData deviceInfo(String id){
|
ApiData apiData = new ApiData();
|
ApiEquipmentInfo apiEquipmentInfo = new ApiEquipmentInfo();
|
|
Equipment equipment = apiService.selectFromequipmentByid(id);
|
|
|
if (equipment==null){
|
JSONObject json = JSONObject.fromObject(equipment);
|
String strJson=json.toString();
|
|
apiData.setErrno(0);
|
apiData.setMessage("没有找到这个设备");
|
apiData.setData(strJson);
|
return apiData;
|
|
}
|
|
apiEquipmentInfo.setId(equipment.getId());
|
apiEquipmentInfo.setDevice_name(equipment.getName());
|
apiEquipmentInfo.setAddress(equipment.getAddress());
|
apiEquipmentInfo.setMac(equipment.getMac());
|
apiEquipmentInfo.setLongitude(String.valueOf(equipment.getLongitude()));
|
apiEquipmentInfo.setLatitude(String.valueOf(equipment.getLatitude()));
|
apiEquipmentInfo.setCreate_time(DateConvert.dateConvert(equipment.getTime()));
|
apiEquipmentInfo.setStatus(equipment.getState());
|
|
|
String installer = equipment.getInstaller();
|
if (!(installer==null||StringUtils.isBlank(installer))){
|
//根据id查找User表
|
User user = apiService.selectFromuserByid(installer);
|
if (user!=null){
|
apiEquipmentInfo.setRelease_uid(String.valueOf(user.getId()));
|
apiEquipmentInfo.setRelease_name(user.getName());
|
}
|
}
|
|
String repairman = equipment.getRepairman();
|
if(!(repairman==null||StringUtils.isBlank(repairman))){
|
User user = apiService.selectFromuserByid(repairman);
|
if (user!=null){
|
apiEquipmentInfo.setRepair_uid(String.valueOf(user.getId()));
|
apiEquipmentInfo.setRepair_name(user.getName());
|
}
|
}
|
|
|
JSONObject json = JSONObject.fromObject(apiEquipmentInfo);
|
String strJson=json.toString();
|
apiData.setErrno(0);
|
apiData.setData(strJson);
|
apiData.setMessage("返回设备详情数据");
|
|
return apiData;
|
}
|
|
//9、上报维修单
|
@RequestMapping(value = "report")
|
@ResponseBody
|
public ApiData report(String uid,String device_mac,String device_name,String device_status,String device_ext,String device_data1,String device_data2){
|
ApiData apiData = new ApiData();
|
|
if(StringUtils.isBlank(uid)||StringUtils.isBlank(device_mac)){
|
apiData.setErrno(0);
|
apiData.setMessage("上报维修单失败,没有维护人或没有维护设备");
|
apiData.setData("");
|
return apiData;
|
}
|
apiData.setErrno(0);
|
apiData.setMessage("上报维修单成功");
|
apiData.setData("");
|
apiService.insertIntoreport(uid, device_mac, device_name, device_status, device_ext, device_data1, device_data2);
|
return apiData;
|
}
|
|
|
//10、维修记录(分页)
|
@RequestMapping(value = "reportList")
|
@ResponseBody
|
public ApiData reportList(String uid,String pageIndex,String pageSize){
|
ApiData apiData = new ApiData();
|
|
int pindex=Integer.parseInt(pageIndex);
|
int psize=Integer.parseInt(pageSize);
|
int index =(pindex-1)*psize;
|
|
List<Report> reports = apiService.selectAllfromreportByrepaiman(uid,index,psize);
|
for (Report r: reports){
|
String create_time = r.getCreate_time();
|
if (create_time!=null){
|
String substring = create_time.substring(0, create_time.lastIndexOf("."));
|
r.setCreate_time(substring);
|
|
}
|
}
|
|
JSONArray jsonArray = JSONArray.fromObject(reports);
|
String s = jsonArray.toString();
|
apiData.setErrno(0);
|
apiData.setMessage("返回维修记录成功");
|
apiData.setData(s);
|
return apiData;
|
}
|
@Resource
|
private EquipmentService equipmentService;
|
//11、根据mac地址获取设备信息,没有数据则为空
|
@RequestMapping(value = "getEquInfoByMac")
|
@ResponseBody
|
public ApiData getEquInfoByMac(String mac) {
|
ApiData apiData = new ApiData();
|
try {
|
if(!StringUtils.isEmpty(mac)) {
|
EquipmentExample example = new EquipmentExample();
|
example.or().andMacEqualTo(mac);
|
List<Equipment> equList = equipmentService.queryListByExample(example);
|
if(equList!=null&&equList.size()>0) {
|
Equipment equipment = equList.get(0);
|
apiData.setErrno(0);
|
apiData.setMessage("根据mac地址获取设备信息成功");
|
apiData.setData(JSON.toJSONString(equipment));
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("根据mac地址未获取到设备信息");
|
apiData.setData(null);
|
}
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("mac地址不能为空");
|
apiData.setData(null);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
log.error(e);
|
}
|
return apiData;
|
}
|
@Resource
|
private MonitorpointService monitorpointService;
|
//12、根据县级市或者区的名称,获取监控点。
|
@RequestMapping(value = "getMpointsByAreaName")
|
@ResponseBody
|
public ApiData getMpointsByAreaName(String areaName) {
|
ApiData apiData = new ApiData();
|
try {
|
if(!StringUtils.isEmpty(areaName)) {
|
MonitorPointExample example = new MonitorPointExample();
|
// example.or().andTbAreaNameEqualTo(areaName);
|
List<MonitorPoint> list = monitorpointService.queryListByExample(example);
|
if(list!=null&&list.size()>0) {
|
apiData.setErrno(0);
|
apiData.setMessage("根据县级市(或行政区)名称获取数据成功");
|
apiData.setData(JSON.toJSONString(list));
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("该县级市(或行政区)未设置检测点");
|
apiData.setData(null);
|
}
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("县级市(或行政区)名称不能为空");
|
apiData.setData(null);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
log.error(e);
|
}
|
return apiData;
|
}
|
@Resource
|
OrganizationService organizationService;
|
//13、根据县级市或者区的名称,获取组织。
|
@RequestMapping(value = "getOrgsByAreaName")
|
@ResponseBody
|
public ApiData getOrgsByAreaName(String areaName) {
|
ApiData apiData = new ApiData();
|
try {
|
if(!StringUtils.isEmpty(areaName)) {
|
OrganizationExample example = new OrganizationExample();
|
example.or().andTbAreaNameEqualTo(areaName).andEnableEqualTo(1);
|
List<Organization> list = organizationService.queryListByExample(example);
|
if(list!=null&&list.size()>0) {
|
apiData.setErrno(0);
|
apiData.setMessage("该县级市(或行政区)名称获取数据成功");
|
apiData.setData(JSON.toJSONString(list));
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("该县级市(或行政区)未设置组织机构");
|
apiData.setData(null);
|
}
|
}else {
|
apiData.setErrno(0);
|
apiData.setMessage("县级市(或行政区)名称不能为空");
|
apiData.setData(null);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
log.error(e);
|
}
|
return apiData;
|
}
|
}
|
|