package cn.com.goldenwater.dcproj.controller.system; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.dto.BisInspAllRlationPersDto; import cn.com.goldenwater.dcproj.dto.OlBisInspOrgDto; import cn.com.goldenwater.dcproj.model.BisInspAll; import cn.com.goldenwater.dcproj.model.PersPosition; import cn.com.goldenwater.dcproj.param.PersPositionBaseParam; import cn.com.goldenwater.dcproj.param.PersPositionParam; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.service.PersPositionService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.GeoUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; /** * @author zhaohg * @date 2019-2-21 */ @Api(value = "督查人员位置管理", tags = "06督查人员位置管理") @RestController @RequestMapping("/pers/position") public class PersPositionController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private PersPositionService persPositionService; @Value("${pers-persition.minute-delay}") public int minuteDelay; @Value("${pers-persition.hour-delay}") public int hourDelay; @Value("${pers-persition.day-delay}") public int dyaDelay; @ApiOperation(value = "添加人员位置信息", notes = "参数字段说明:{\n\r" + " \"id\":\"主键id\",\n\r" + " \"persId\":\"人员id\",\n\r" + " \"orgId\":\"机构id\",\n\r" + " \"groupId\":\"督查组id\",\n\r" + " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"persName\":\"人员姓名\",\n\r" + " \"mobile\":\"手机号\",\n\r" + " \"lon\":\"经度\",\n\r" + " \"lat\":\"纬度\",\n\r" + " \"longitude\":\"经度(PC端用)\",\n\r" + " \"latitude\":\"纬度(PC端用)\",\n\r" + " \"adCode\":\"行政区划编码\",\n\r" + " };\n\r" + "返回结构说明:{\n\r" + " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" + " \"code\":\"错误代码\",\n\r" + " \"message\":\"描述信息\",\n\r" + " \"throwable\":\"异常信息\",\n\r" + " \"data(数据信息)\":null\n\r" + " }") @RequestMapping(value = "", method = RequestMethod.POST) public BaseResponse insert(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody PersPosition persPosition) { String uuid = UuidUtil.uuid(); // 生成uuid persPosition.setId(uuid); persPosition.setOperateTime(new Date()); Map map = GeoUtil.gcj02towgs84(persPosition.getLon(), persPosition.getLat()); persPosition.setLatitude(map.get("lat")); persPosition.setLongitude(map.get("lon")); persPosition.setOrgId(getCurrentOrgId()); int ret = persPositionService.insert(persPosition); return buildSuccessResponse(uuid); } @ApiOperation(value = "添加多个的接口") @RequestMapping(value = "insertList", method = RequestMethod.POST) public BaseResponse insertList(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody List persPositions) { try { persPositionService.insertList(persPositions); return buildSuccessResponse(); } catch (Exception e) { e.printStackTrace(); return buildFailResponse(e); } } @ApiOperation(value = "根据ID删除xxx") @RequestMapping(value = "/{id}", method = RequestMethod.POST) public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { int ret = persPositionService.delete(id); return buildSuccessResponse(); } @ApiOperation(value = "更新xxx信息") @RequestMapping(value = "/update", method = RequestMethod.POST) public BaseResponse update(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody PersPosition persPosition) { Assert.notNull(persPosition.getId(), "主键id为必填参数"); int ret = persPositionService.update(persPosition); return buildSuccessResponse(); } @ApiOperation(value = "根据ID获取xxx(单表)") @RequestMapping(value = "/{id}", method = RequestMethod.GET) public BaseResponse get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { PersPosition persPosition = persPositionService.get(id); return buildSuccessResponse(persPosition); } @ApiOperation(value = "条件查询人员的最新位置列表", notes = "参数字段说明:{\n\r" + " \"id\":\"主键id\",\n\r" + " \"persId\":\"人员id\",\n\r" + " \"orgId\":\"机构id\",\n\r" + " \"groupId\":\"督查组id\",\n\r" + " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"persName\":\"人员姓名\",\n\r" + " \"mobile\":\"手机号\",\n\r" + " \"lon\":\"经度\",\n\r" + " \"lat\":\"纬度\",\n\r" + " \"adCode\":\"行政区划编码\",\n\r" + " };\n\r" + "返回结构说明:{\n\r" + " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" + " \"code\":\"错误代码\",\n\r" + " \"message\":\"描述信息\",\n\r" + " \"throwable\":\"异常信息\",\n\r" + " \"data(数据信息)\":[\n\r" + " {\n\r" + " \"id\":\"主键id\",\n\r" + " \"persId\":\"人员id\",\n\r" + " \"orgId\":\"机构id\",\n\r" + " \"groupId\":\"督查组id\",\n\r" + " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"persName\":\"人员姓名\",\n\r" + " \"mobile\":\"手机号\",\n\r" + " \"lon\":\"经度\",\n\r" + " \"lat\":\"纬度\",\n\r" + " \"adCode\":\"行政区划编码\",\n\r" + " \"longitude\":\"经度(PC端用)\",\n\r" + " \"latitude\":\"纬度(PC端用)\",\n\r" + " }\n\r" + " ]\n\r" + " }") @RequestMapping(value = "/findList", method = RequestMethod.GET) public BaseResponse> findList(@ApiParam(name = "persPositionParam", value = "persPositionParam", required = true) PersPositionParam persPositionParam) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); persPositionParam.setOperateTime(date); persPositionParam.setOrgId(getCurrentOrgId()); List list = persPositionService.findList(persPositionParam); return buildSuccessResponse(list); } @ApiOperation(value = "查询人员的轨迹列表", notes = "参数字段说明:{\n\r" + " \"persId\":\"人员id\",\n\r" + " \"orgId\":\"机构id\",\n\r" + " \"groupId\":\"督查组id\",\n\r" + " \"operateTimeFrom\":\"定位时间从(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"operateTimeTo\":\"定位时间到(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"persName\":\"人员姓名\",\n\r" + " \"mobile\":\"手机号\",\n\r" + " \"lon\":\"经度\",\n\r" + " \"lat\":\"纬度\",\n\r" + " \"adCode\":\"行政区划编码\",\n\r" + " };\n\r" + "返回结构说明:{\n\r" + " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" + " \"code\":\"错误代码\",\n\r" + " \"message\":\"描述信息\",\n\r" + " \"throwable\":\"异常信息\",\n\r" + " \"data(数据信息)\":[\n\r" + " {\n\r" + " \"id\":\"主键id\",\n\r" + " \"persId\":\"人员id\",\n\r" + " \"orgId\":\"机构id\",\n\r" + " \"groupId\":\"督查组id\",\n\r" + " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" + " \"persName\":\"人员姓名\",\n\r" + " \"mobile\":\"手机号\",\n\r" + " \"lon\":\"经度\",\n\r" + " \"lat\":\"纬度\",\n\r" + " \"adCode\":\"行政区划编码\",\n\r" + " \"longitude\":\"经度(PC端用)\",\n\r" + " \"latitude\":\"纬度(PC端用)\",\n\r" + " }\n\r" + " ]\n\r" + " }") @RequestMapping(value = "/findListByPersId", method = RequestMethod.GET) public BaseResponse> findListByPersId(@ApiParam(name = "persPositionParam", value = "persPositionParam", required = true) PersPositionParam persPositionParam) { persPositionParam.setOrgId(getCurrentOrgId()); List list = persPositionService.findListByPersId(persPositionParam); return buildSuccessResponse(list); } @Autowired private OlBisInspOrgService olBisInspOrgService; @ApiOperation("查询用户当前督查类型") @RequestMapping(value = "/findClassify", method = RequestMethod.GET) public BaseResponse> findClassify(String type, String persid) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); List list = persPositionService.findClassify(date, persid, olBisInspOrgService.getProvince(getCurrentOrgId())); return buildSuccessResponse(list); } @ApiOperation("根据督查类型获取督查用户列表") @RequestMapping(value = "/findPersListByClassify", method = RequestMethod.GET) public BaseResponse> findPersListByClassify(PersPositionParam persPositionParam) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); if (StringUtils.isNotBlank(persPositionParam.getOrderBy()) && persPositionParam.getOrderBy().contains("undefined")) { persPositionParam.setOrderBy(""); } persPositionParam.setOperateTime(date); persPositionParam.setProvince(olBisInspOrgService.getProvince(getCurrentOrgId())); PageInfo page = persPositionService.findPersListByClassify(persPositionParam); return buildSuccessResponse(page); } @ApiOperation("获取当前用户所在位置") @RequestMapping(value = "/getPersPosition", method = RequestMethod.GET) public BaseResponse getPersPosition(String persId) { PersPosition persPosition = persPositionService.getPersPosition(persId); return buildSuccessResponse(persPosition); } @ApiOperation("获取当前在线机构列表") @RequestMapping(value = "/findOrgList", method = RequestMethod.GET) public BaseResponse> findOrgList() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date operateTime = calendar.getTime(); List list = persPositionService.findOrgList(operateTime); return buildSuccessResponse(list); } @ApiOperation("根据机构获取在线人员信息") @RequestMapping(value = "/findPersPageByOrgId", method = RequestMethod.GET) public BaseResponse> findPersPageByOrgId(PersPositionParam persPositionParam, HttpServletRequest request, HttpServletResponse response) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); persPositionParam.setOperateTime(date); if (StringUtils.isBlank(persPositionParam.getPersId())) { persPositionParam.setPersId(request.getHeader("persId")); } PageInfo page = persPositionService.findPersPageByOrgId(persPositionParam, response); return buildSuccessResponse(page); } @ApiOperation("根据机构获取机构下当前操作人员列表") @RequestMapping(value = "/findPersListByOrgId", method = RequestMethod.GET) public BaseResponse> findPersListByOrgId(PersPositionParam persPositionParam, HttpServletRequest request) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); persPositionParam.setOperateTime(date); persPositionParam.setOrgId(getCurrentOrgId()); if (StringUtils.isBlank(persPositionParam.getPersId())) { persPositionParam.setPersId(getCurrentPersId()); } if (StringUtils.isBlank(persPositionParam.getAdCode())) { persPositionParam.setAdCode(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(getCurrentOrgId()))); } else { persPositionParam.setAdCode(AdLevelUtil.getAddvcd(persPositionParam.getAdCode())); } if ("041".equals(getCurrentOrgId())) { persPositionParam.setOrgId(null); } List list = persPositionService.findPersListByOrgId(persPositionParam); return buildSuccessResponse(list); } @ApiOperation(value = "稽察人员一张图接口") @RequestMapping(value = "/findPersListById", method = RequestMethod.GET) public BaseResponse> findPersListById(PersPositionParam persPositionParam, HttpServletRequest request) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); persPositionParam.setOperateTime(date); persPositionParam.setOrgId(getCurrentOrgId()); if (StringUtils.isBlank(persPositionParam.getPersId())) { persPositionParam.setPersId(request.getHeader("persId")); } List list = persPositionService.findPersListById(persPositionParam); return buildSuccessResponse(list); } @ApiOperation(value = "稽察人员一张图分页接口") @RequestMapping(value = "/findPersPageById", method = RequestMethod.GET) public BaseResponse> findPersPageById(PersPositionParam persPositionParam, HttpServletRequest request) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); persPositionParam.setOperateTime(date); if (StringUtils.isBlank(persPositionParam.getPersId())) { persPositionParam.setPersId(request.getHeader("persId")); } PageInfo pageInfo = persPositionService.findPersPageById(persPositionParam); return buildSuccessResponse(pageInfo); } @ApiOperation("当前在线人员统计") @RequestMapping(value = "/findPersCount", method = RequestMethod.GET) public BaseResponse findPersCount() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date operateTime = calendar.getTime(); OlBisInspOrgDto counts = persPositionService.findPersCount(operateTime, getCurrentOrgId()); return buildSuccessResponse(counts); } @ApiOperation("当前人员所属督查节点查询") @RequestMapping(value = "/findNodeByPersId", method = RequestMethod.GET) public BaseResponse> findNodeByPersId(String persId) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, minuteDelay); calendar.add(Calendar.HOUR_OF_DAY, hourDelay); calendar.add(Calendar.DAY_OF_MONTH, dyaDelay); Date date = calendar.getTime(); List list = persPositionService.findNodeByPersId(date, persId, getCurrentOrgId()); return buildSuccessResponse(list); } @ApiOperation(value = "根据人员id获取轨迹路线", notes = "根据人员id获取轨迹路线") @RequestMapping(value = "/fingPositionByPersid", method = RequestMethod.GET) public BaseResponse fingPositionByPersid(@ApiParam(name = "persid", value = "人员id", required = true) @RequestParam String persid, @ApiParam(name = "sttm", value = "开始时间", required = false) @RequestParam(required = false) String sttm, @ApiParam(name = "entm", value = "结束时间", required = false) @RequestParam(required = false) String entm) { PersPosition persPosition = persPositionService.fingPositionByPersid(persid, sttm, entm,getCurrentLoginUser(),getCurrentOrgId()); return buildSuccessResponse(persPosition); } @ApiOperation(value = "获取轨迹列表", notes = "获取轨迹列表") @RequestMapping(value = "/fingPositionList", method = RequestMethod.POST) public BaseResponse> fingPositionList(@RequestBody PersPositionBaseParam persPositionBaseParam) { PageInfo list = persPositionService.fingPositionList(persPositionBaseParam); return buildSuccessResponse(list); } }