package com.moral.monitor.controller; 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); } return apiData; } //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 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 apiEquipments = new ArrayList(); 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 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 apiEquipments = new ArrayList(); 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 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 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 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 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; } }