jinpengyong
2020-12-04 e294ea312fe1994c3ddfe26595ee414e6612eb0c
src/main/java/com/moral/controller/MobileController.java
@@ -2,27 +2,47 @@
import static com.moral.common.util.WebUtils.getParametersStartingWith;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
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.bean.AppData;
import com.moral.common.bean.ResultBean;
import com.moral.common.util.Crypto;
import com.moral.common.util.WebUtils;
import com.moral.entity.Account;
import com.moral.entity.Device;
import com.moral.entity.MonitorPoint;
import com.moral.entity.OperateUser;
import com.moral.entity.Organization;
import com.moral.entity.Profession;
import com.moral.entity.adapter.EquDeviceAdapter;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
import com.moral.service.HistoryService;
import com.moral.service.MonitorPointService;
import com.moral.service.OperateUserService;
import com.moral.service.OrganizationService;
import com.moral.service.ProfessionService;
import com.moral.util.MessageUtils;
import com.taobao.api.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
/**
 * The Class MobileController.
@@ -30,6 +50,7 @@
@RestController
@RequestMapping("mobile")
@CrossOrigin(origins = "*", maxAge = 3600)
@Api(tags = "Mobile", description = "APP接口")
public class MobileController {
   /** The operate user service. */
@@ -48,6 +69,15 @@
   @Resource
   private MonitorPointService monitorPointService;
   @Resource
   private ProfessionService professionService;
   @Resource
   private AccountService accountService;
   @Resource
   private HistoryService historyService;
   /**
    * Mobile login.登录
    *
@@ -55,10 +85,10 @@
    * @param password the password
    * @return the result bean
    */
   @GetMapping("accountlogin")
   public ResultBean<OperateUser> mobileLogin(String username, String password) {
   @RequestMapping("accountlogin")
   public AppData<OperateUser> mobileLogin(String username, String password) {
      OperateUser operateUser = operateUserService.mobileLogin(username,password);
      return new ResultBean<OperateUser>(operateUser);
      return new AppData<OperateUser>(operateUser);
   }
   
   /**
@@ -69,22 +99,29 @@
    * @param newpassword the newpassword
    * @return the result bean
    */
   @GetMapping("upPassword")
   public ResultBean<OperateUser> updatePassword(Integer uid, String password, String newpassword) {
   @RequestMapping("upPassword")
   public AppData<OperateUser> updatePassword(Integer uid, String password, String newpassword) {
      OperateUser operateUser = operateUserService.updatePassword(uid,password,newpassword);
      return new ResultBean<OperateUser>(operateUser);
      return new AppData<OperateUser>(operateUser);
   }
   /**
    * Install device.终端采集
    *
    * @param device the device
    * @return the result bean
    * 根据 设备id 来获取设备信息
    */
   @GetMapping("reportDevice")
   public ResultBean<String> installDevice(Device device) {
      deviceService.saveOrUpdateDevice(device);
      return new ResultBean<String>("");
   @RequestMapping("deviceInfo")
   public AppData<Device> deviceInfo(Integer id){
      Device device = deviceService.queryById(id);
      return  new AppData<Device>(device);
   }
   /**
    *
    * @param equDeviceAdapter
    * @return
    */
   @RequestMapping("reportDevice")
   public AppData<String> installDevice(EquDeviceAdapter equDeviceAdapter) {
      //deviceService.addOrModify(equDeviceAdapter.toDevice());
      deviceService.saveOrUpdate4Mobile(equDeviceAdapter.toDevice(), equDeviceAdapter.getDeviceProperty());
      return new AppData<String>("");
   }
   /**
@@ -95,11 +132,11 @@
    * @param pageSize the page size
    * @return the install devices by operate user
    */
   @GetMapping("myRelease")
   public ResultBean<List<Device>> getInstallDevicesByOperateUser(@RequestParam(value="uid", required=true)Integer uid,
   @RequestMapping("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);
      return new ResultBean<List<Device>>(devices);
      return new AppData<List<Device>>(devices);
   }
   /**
@@ -108,35 +145,233 @@
    * @param mac the mac
    * @return the device by mac
    */
   @GetMapping("getEquInfoByMac")
   public ResultBean<Device> getDeviceByMac(@RequestParam(value="mac", required=true)String mac) {
      Device device = deviceService.getDeviceByMac(mac);
      return new ResultBean<Device>(device);
   @RequestMapping("getEquInfoByMac")
   public AppData<Map> getDeviceByMac(@RequestParam(value="mac", required=true)String mac) {
      Device device = deviceService.getDeviceByMac(mac,false);//不从缓存取
      if(device!=null){
         Map<String,Object> deviceMap = new HashMap<>(BeanMap.create(device));
         deviceMap.put("monitorpointDetail",deviceMap.get("monitorPoint"));
         deviceMap.remove("monitorPoint");
         return new AppData<Map>(deviceMap);
      }else{
         return  new AppData("mac地址不存在",AppData.FAIL);
      }
   }
   /**
    * Gets the monitor points by area name.
    *
    * @param areaName the area name
    * @param request the area name
    * @return the monitor points by area name
    */
   @GetMapping("getMpointsByAreaName")
   public ResultBean<List<MonitorPoint>> getMonitorPointsByAreaName(HttpServletRequest request) {
   @RequestMapping("getMpointsByAreaName")
   public AppData<List<MonitorPoint>> getMonitorPointsByAreaName(HttpServletRequest request) {
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsByAreaName(parameters);
      return new ResultBean<List<MonitorPoint>>(monitorPoints);
      return new AppData<List<MonitorPoint>>(monitorPoints);
   }
   /**
    * Gets the organizations by area name.
    *
    * @param areaName the area name
    * @param request the area name
    * @return the organizations by area name
    */
   @GetMapping("getOrgsByAreaName")
   public ResultBean<List<Organization>> getOrganizationsByAreaName(HttpServletRequest request) {
   @RequestMapping("getOrgsByAreaName")
   public AppData<List<Organization>> getOrganizationsByAreaName(HttpServletRequest request) {
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      List<Organization> organizations = organizationService.getOrganizationsByAreaName(parameters);
      return new ResultBean<List<Organization>>(organizations);
      return new AppData<List<Organization>>(organizations);
   }
   /**
    * Send SMS
    *
    * @param mobile
    * @return
    */
   @RequestMapping("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>("");
   }
   /**
    *
    * @param username
    * @param password
    * @param code
    * @return
    */
   @RequestMapping("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;
      }
   }
   @RequestMapping("profession")
   public AppData<List<Profession>> profession(){
      List<Profession> professions = professionService.getProfessiontList();
      return new AppData<List<Profession>>(professions);
   }
   @GetMapping("login")
   @ApiOperation(value = "公司用户登录", notes = "公司用户登录")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "account", value = "账号", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<Account> companyLogin(HttpServletRequest request){
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      Account account = accountService.companyLogin(parameters);
      return new ResultBean<Account>(account);
   }
   @GetMapping("devices")
   @ApiOperation(value = "获取设备信息")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "organizationId", value = "组织Id", required = true, paramType = "query", dataType = "String"),
   })
   public ResultBean<List<Device>> getDevicesByOrganizationId(HttpServletRequest request){
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      List<Device> devices = deviceService.getDevicesByOrganizationId(parameters);
      return new ResultBean<List<Device>>(devices);
   }
   @GetMapping("sensors")
   @ApiOperation(value = "获取设备传感器信息")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "deviceVersionId", value = "设备版本Id", required = true, paramType = "query", dataType = "int"),
         @ApiImplicitParam(name = "mac", value = "设备mac", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "deviceId", value = "设备id", required = true, paramType = "query", dataType = "int"),
   })
   public ResultBean<List<Map<String, Object>>> getSensorsDataByDevice(HttpServletRequest request){
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      List<Map<String, Object>> sensors = historyService.getSensorsDataByDevice(parameters);
      return new ResultBean<List<Map<String, Object>>>(sensors);
   }
   @GetMapping("sensor")
   @ApiOperation(value = "获取单一传感器数据")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "mac", value = "设备mac", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "sensorKey", value = "传感器key", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "size", value = "获取数据条数", required = true, paramType = "query", dataType = "int"),
   })
   public ResultBean<List<Map<String, Object>>> getSensorDataBySensorKey(HttpServletRequest request){
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      List<Map<String, Object>> sensors = historyService.getSensorDataBySensorKey(parameters);
      return new ResultBean<List<Map<String, Object>>>(sensors);
   }
   @GetMapping("profession-provincecode")
   @ApiOperation(value = "根据省code返回行业数据", notes = "根据省code返回行业数据")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "provinceCode", value = "省code", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<List<Profession>> getProfessionByProvinceCode(HttpServletRequest request){
      Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
      List<Profession> professions = professionService.getProfessiontList(parameters);
      return new ResultBean<List<Profession>>(professions);
   }
   @PostMapping("update-maintenance")
   @ApiOperation(value = "设备状态从离线更新为维保", notes = "设备状态从离线更新为维保")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "id", value = "设备ID", required = true, paramType = "query", dataType = "int") ,
         @ApiImplicitParam(name = "old_state", value = "旧的设备状态", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "new_state", value = "新的设备状态", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean offLinToMaintenance(HttpServletRequest request) {
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      deviceService.offLinToMaintenance(parameters);
      ResultBean resultBean = new ResultBean(parameters);
      return resultBean;
   }
   @GetMapping("mointorPointRank")
   @ApiOperation(value = "获取站点排名", notes = "获取站点排名")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "accountId", value = "账号id", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "sensor", value = "因子", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<List<Map<String, Object>>> getMointorPointRank(HttpServletRequest request){
      Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
      String id = parameters.get("accountId").toString();
      String sensor = parameters.get("sensor").toString();
      Map<String, Object> account = accountService.getOrganizationIdByAccountId(id);
      //通过组织id来获取站点和设备信息
      account.put("sensor", sensor);
      List<Map<String, Object>> returnList = historyService.getMointorPointRankByOrganizationId(account);
      return new ResultBean<List<Map<String, Object>>>(returnList);
   }
}