381c9c84d9be67a3cbd80068fcdaf1f5cdf2e923.svn-base 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. package cn.com.goldenwater.dcproj.controller.system;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.dto.BisInspAllRlationPersDto;
  5. import cn.com.goldenwater.dcproj.dto.OlBisInspOrgDto;
  6. import cn.com.goldenwater.dcproj.model.BisInspAll;
  7. import cn.com.goldenwater.dcproj.model.PersPosition;
  8. import cn.com.goldenwater.dcproj.param.PersPositionBaseParam;
  9. import cn.com.goldenwater.dcproj.param.PersPositionParam;
  10. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  11. import cn.com.goldenwater.dcproj.service.PersPositionService;
  12. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  13. import cn.com.goldenwater.dcproj.utils.GeoUtil;
  14. import cn.com.goldenwater.id.util.UuidUtil;
  15. import com.github.pagehelper.PageInfo;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import io.swagger.annotations.ApiParam;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.beans.factory.annotation.Value;
  24. import org.springframework.util.Assert;
  25. import org.springframework.web.bind.annotation.*;
  26. import javax.servlet.http.HttpServletRequest;
  27. import javax.servlet.http.HttpServletResponse;
  28. import java.util.Calendar;
  29. import java.util.Date;
  30. import java.util.List;
  31. import java.util.Map;
  32. /**
  33. * @author zhaohg
  34. * @date 2019-2-21
  35. */
  36. @Api(value = "督查人员位置管理", tags = "06督查人员位置管理")
  37. @RestController
  38. @RequestMapping("/pers/position")
  39. public class PersPositionController extends BaseController {
  40. private Logger logger = LoggerFactory.getLogger(getClass());
  41. @Autowired
  42. private PersPositionService persPositionService;
  43. @Value("${pers-persition.minute-delay}")
  44. public int minuteDelay;
  45. @Value("${pers-persition.hour-delay}")
  46. public int hourDelay;
  47. @Value("${pers-persition.day-delay}")
  48. public int dyaDelay;
  49. @ApiOperation(value = "添加人员位置信息", notes = "参数字段说明:{\n\r" +
  50. " \"id\":\"主键id\",\n\r" +
  51. " \"persId\":\"人员id\",\n\r" +
  52. " \"orgId\":\"机构id\",\n\r" +
  53. " \"groupId\":\"督查组id\",\n\r" +
  54. " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  55. " \"persName\":\"人员姓名\",\n\r" +
  56. " \"mobile\":\"手机号\",\n\r" +
  57. " \"lon\":\"经度\",\n\r" +
  58. " \"lat\":\"纬度\",\n\r" +
  59. " \"longitude\":\"经度(PC端用)\",\n\r" +
  60. " \"latitude\":\"纬度(PC端用)\",\n\r" +
  61. " \"adCode\":\"行政区划编码\",\n\r" +
  62. " };\n\r" +
  63. "返回结构说明:{\n\r" +
  64. " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
  65. " \"code\":\"错误代码\",\n\r" +
  66. " \"message\":\"描述信息\",\n\r" +
  67. " \"throwable\":\"异常信息\",\n\r" +
  68. " \"data(数据信息)\":null\n\r" +
  69. " }")
  70. @RequestMapping(value = "", method = RequestMethod.POST)
  71. public BaseResponse<String> insert(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody PersPosition persPosition) {
  72. String uuid = UuidUtil.uuid(); // 生成uuid
  73. persPosition.setId(uuid);
  74. persPosition.setOperateTime(new Date());
  75. Map<String, Double> map = GeoUtil.gcj02towgs84(persPosition.getLon(), persPosition.getLat());
  76. persPosition.setLatitude(map.get("lat"));
  77. persPosition.setLongitude(map.get("lon"));
  78. persPosition.setOrgId(getCurrentOrgId());
  79. int ret = persPositionService.insert(persPosition);
  80. return buildSuccessResponse(uuid);
  81. }
  82. @ApiOperation(value = "添加多个的接口")
  83. @RequestMapping(value = "insertList", method = RequestMethod.POST)
  84. public BaseResponse insertList(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody List<PersPosition> persPositions) {
  85. try {
  86. persPositionService.insertList(persPositions);
  87. return buildSuccessResponse();
  88. } catch (Exception e) {
  89. e.printStackTrace();
  90. return buildFailResponse(e);
  91. }
  92. }
  93. @ApiOperation(value = "根据ID删除xxx")
  94. @RequestMapping(value = "/{id}", method = RequestMethod.POST)
  95. public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  96. int ret = persPositionService.delete(id);
  97. return buildSuccessResponse();
  98. }
  99. @ApiOperation(value = "更新xxx信息")
  100. @RequestMapping(value = "/update", method = RequestMethod.POST)
  101. public BaseResponse update(@ApiParam(name = "persPosition", value = "PersPosition", required = true) @RequestBody PersPosition persPosition) {
  102. Assert.notNull(persPosition.getId(), "主键id为必填参数");
  103. int ret = persPositionService.update(persPosition);
  104. return buildSuccessResponse();
  105. }
  106. @ApiOperation(value = "根据ID获取xxx(单表)")
  107. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  108. public BaseResponse<PersPosition> get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  109. PersPosition persPosition = persPositionService.get(id);
  110. return buildSuccessResponse(persPosition);
  111. }
  112. @ApiOperation(value = "条件查询人员的最新位置列表", notes = "参数字段说明:{\n\r" +
  113. " \"id\":\"主键id\",\n\r" +
  114. " \"persId\":\"人员id\",\n\r" +
  115. " \"orgId\":\"机构id\",\n\r" +
  116. " \"groupId\":\"督查组id\",\n\r" +
  117. " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  118. " \"persName\":\"人员姓名\",\n\r" +
  119. " \"mobile\":\"手机号\",\n\r" +
  120. " \"lon\":\"经度\",\n\r" +
  121. " \"lat\":\"纬度\",\n\r" +
  122. " \"adCode\":\"行政区划编码\",\n\r" +
  123. " };\n\r" +
  124. "返回结构说明:{\n\r" +
  125. " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
  126. " \"code\":\"错误代码\",\n\r" +
  127. " \"message\":\"描述信息\",\n\r" +
  128. " \"throwable\":\"异常信息\",\n\r" +
  129. " \"data(数据信息)\":[\n\r" +
  130. " {\n\r" +
  131. " \"id\":\"主键id\",\n\r" +
  132. " \"persId\":\"人员id\",\n\r" +
  133. " \"orgId\":\"机构id\",\n\r" +
  134. " \"groupId\":\"督查组id\",\n\r" +
  135. " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  136. " \"persName\":\"人员姓名\",\n\r" +
  137. " \"mobile\":\"手机号\",\n\r" +
  138. " \"lon\":\"经度\",\n\r" +
  139. " \"lat\":\"纬度\",\n\r" +
  140. " \"adCode\":\"行政区划编码\",\n\r" +
  141. " \"longitude\":\"经度(PC端用)\",\n\r" +
  142. " \"latitude\":\"纬度(PC端用)\",\n\r" +
  143. " }\n\r" +
  144. " ]\n\r" +
  145. " }")
  146. @RequestMapping(value = "/findList", method = RequestMethod.GET)
  147. public BaseResponse<List<PersPosition>> findList(@ApiParam(name = "persPositionParam", value = "persPositionParam", required = true) PersPositionParam persPositionParam) {
  148. Calendar calendar = Calendar.getInstance();
  149. calendar.add(Calendar.MINUTE, minuteDelay);
  150. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  151. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  152. Date date = calendar.getTime();
  153. persPositionParam.setOperateTime(date);
  154. persPositionParam.setOrgId(getCurrentOrgId());
  155. List<PersPosition> list = persPositionService.findList(persPositionParam);
  156. return buildSuccessResponse(list);
  157. }
  158. @ApiOperation(value = "查询人员的轨迹列表", notes = "参数字段说明:{\n\r" +
  159. " \"persId\":\"人员id\",\n\r" +
  160. " \"orgId\":\"机构id\",\n\r" +
  161. " \"groupId\":\"督查组id\",\n\r" +
  162. " \"operateTimeFrom\":\"定位时间从(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  163. " \"operateTimeTo\":\"定位时间到(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  164. " \"persName\":\"人员姓名\",\n\r" +
  165. " \"mobile\":\"手机号\",\n\r" +
  166. " \"lon\":\"经度\",\n\r" +
  167. " \"lat\":\"纬度\",\n\r" +
  168. " \"adCode\":\"行政区划编码\",\n\r" +
  169. " };\n\r" +
  170. "返回结构说明:{\n\r" +
  171. " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
  172. " \"code\":\"错误代码\",\n\r" +
  173. " \"message\":\"描述信息\",\n\r" +
  174. " \"throwable\":\"异常信息\",\n\r" +
  175. " \"data(数据信息)\":[\n\r" +
  176. " {\n\r" +
  177. " \"id\":\"主键id\",\n\r" +
  178. " \"persId\":\"人员id\",\n\r" +
  179. " \"orgId\":\"机构id\",\n\r" +
  180. " \"groupId\":\"督查组id\",\n\r" +
  181. " \"operateTime\":\"定位时间(格式:yyyy-MM-dd HH:mm:ss,如:2018-07-08 13:14:14)\",\n\r" +
  182. " \"persName\":\"人员姓名\",\n\r" +
  183. " \"mobile\":\"手机号\",\n\r" +
  184. " \"lon\":\"经度\",\n\r" +
  185. " \"lat\":\"纬度\",\n\r" +
  186. " \"adCode\":\"行政区划编码\",\n\r" +
  187. " \"longitude\":\"经度(PC端用)\",\n\r" +
  188. " \"latitude\":\"纬度(PC端用)\",\n\r" +
  189. " }\n\r" +
  190. " ]\n\r" +
  191. " }")
  192. @RequestMapping(value = "/findListByPersId", method = RequestMethod.GET)
  193. public BaseResponse<List<PersPosition>> findListByPersId(@ApiParam(name = "persPositionParam", value = "persPositionParam", required = true) PersPositionParam persPositionParam) {
  194. persPositionParam.setOrgId(getCurrentOrgId());
  195. List<PersPosition> list = persPositionService.findListByPersId(persPositionParam);
  196. return buildSuccessResponse(list);
  197. }
  198. @Autowired
  199. private OlBisInspOrgService olBisInspOrgService;
  200. @ApiOperation("查询用户当前督查类型")
  201. @RequestMapping(value = "/findClassify", method = RequestMethod.GET)
  202. public BaseResponse<List<BisInspAll>> findClassify(String type, String persid) {
  203. Calendar calendar = Calendar.getInstance();
  204. calendar.add(Calendar.MINUTE, minuteDelay);
  205. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  206. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  207. Date date = calendar.getTime();
  208. List<BisInspAll> list = persPositionService.findClassify(date, persid, olBisInspOrgService.getProvince(getCurrentOrgId()));
  209. return buildSuccessResponse(list);
  210. }
  211. @ApiOperation("根据督查类型获取督查用户列表")
  212. @RequestMapping(value = "/findPersListByClassify", method = RequestMethod.GET)
  213. public BaseResponse<PageInfo<BisInspAllRlationPersDto>> findPersListByClassify(PersPositionParam persPositionParam) {
  214. Calendar calendar = Calendar.getInstance();
  215. calendar.add(Calendar.MINUTE, minuteDelay);
  216. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  217. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  218. Date date = calendar.getTime();
  219. if (StringUtils.isNotBlank(persPositionParam.getOrderBy()) && persPositionParam.getOrderBy().contains("undefined")) {
  220. persPositionParam.setOrderBy("");
  221. }
  222. persPositionParam.setOperateTime(date);
  223. persPositionParam.setProvince(olBisInspOrgService.getProvince(getCurrentOrgId()));
  224. PageInfo<BisInspAllRlationPersDto> page = persPositionService.findPersListByClassify(persPositionParam);
  225. return buildSuccessResponse(page);
  226. }
  227. @ApiOperation("获取当前用户所在位置")
  228. @RequestMapping(value = "/getPersPosition", method = RequestMethod.GET)
  229. public BaseResponse<PersPosition> getPersPosition(String persId) {
  230. PersPosition persPosition = persPositionService.getPersPosition(persId);
  231. return buildSuccessResponse(persPosition);
  232. }
  233. @ApiOperation("获取当前在线机构列表")
  234. @RequestMapping(value = "/findOrgList", method = RequestMethod.GET)
  235. public BaseResponse<List<OlBisInspOrgDto>> findOrgList() {
  236. Calendar calendar = Calendar.getInstance();
  237. calendar.add(Calendar.MINUTE, minuteDelay);
  238. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  239. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  240. Date operateTime = calendar.getTime();
  241. List<OlBisInspOrgDto> list = persPositionService.findOrgList(operateTime);
  242. return buildSuccessResponse(list);
  243. }
  244. @ApiOperation("根据机构获取在线人员信息")
  245. @RequestMapping(value = "/findPersPageByOrgId", method = RequestMethod.GET)
  246. public BaseResponse<PageInfo<BisInspAllRlationPersDto>> findPersPageByOrgId(PersPositionParam persPositionParam, HttpServletRequest request, HttpServletResponse response) {
  247. Calendar calendar = Calendar.getInstance();
  248. calendar.add(Calendar.MINUTE, minuteDelay);
  249. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  250. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  251. Date date = calendar.getTime();
  252. persPositionParam.setOperateTime(date);
  253. if (StringUtils.isBlank(persPositionParam.getPersId())) {
  254. persPositionParam.setPersId(request.getHeader("persId"));
  255. }
  256. PageInfo<BisInspAllRlationPersDto> page = persPositionService.findPersPageByOrgId(persPositionParam, response);
  257. return buildSuccessResponse(page);
  258. }
  259. @ApiOperation("根据机构获取机构下当前操作人员列表")
  260. @RequestMapping(value = "/findPersListByOrgId", method = RequestMethod.GET)
  261. public BaseResponse<List<BisInspAllRlationPersDto>> findPersListByOrgId(PersPositionParam persPositionParam, HttpServletRequest request) {
  262. Calendar calendar = Calendar.getInstance();
  263. calendar.add(Calendar.MINUTE, minuteDelay);
  264. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  265. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  266. Date date = calendar.getTime();
  267. persPositionParam.setOperateTime(date);
  268. persPositionParam.setOrgId(getCurrentOrgId());
  269. if (StringUtils.isBlank(persPositionParam.getPersId())) {
  270. persPositionParam.setPersId(getCurrentPersId());
  271. }
  272. if (StringUtils.isBlank(persPositionParam.getAdCode())) {
  273. persPositionParam.setAdCode(AdLevelUtil.getAddvcd(olBisInspOrgService.getProvince(getCurrentOrgId())));
  274. } else {
  275. persPositionParam.setAdCode(AdLevelUtil.getAddvcd(persPositionParam.getAdCode()));
  276. }
  277. if ("041".equals(getCurrentOrgId())) {
  278. persPositionParam.setOrgId(null);
  279. }
  280. List<BisInspAllRlationPersDto> list = persPositionService.findPersListByOrgId(persPositionParam);
  281. return buildSuccessResponse(list);
  282. }
  283. @ApiOperation(value = "稽察人员一张图接口")
  284. @RequestMapping(value = "/findPersListById", method = RequestMethod.GET)
  285. public BaseResponse<List<BisInspAllRlationPersDto>> findPersListById(PersPositionParam persPositionParam, HttpServletRequest request) {
  286. Calendar calendar = Calendar.getInstance();
  287. calendar.add(Calendar.MINUTE, minuteDelay);
  288. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  289. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  290. Date date = calendar.getTime();
  291. persPositionParam.setOperateTime(date);
  292. persPositionParam.setOrgId(getCurrentOrgId());
  293. if (StringUtils.isBlank(persPositionParam.getPersId())) {
  294. persPositionParam.setPersId(request.getHeader("persId"));
  295. }
  296. List<BisInspAllRlationPersDto> list = persPositionService.findPersListById(persPositionParam);
  297. return buildSuccessResponse(list);
  298. }
  299. @ApiOperation(value = "稽察人员一张图分页接口")
  300. @RequestMapping(value = "/findPersPageById", method = RequestMethod.GET)
  301. public BaseResponse<PageInfo<BisInspAllRlationPersDto>> findPersPageById(PersPositionParam persPositionParam, HttpServletRequest request) {
  302. Calendar calendar = Calendar.getInstance();
  303. calendar.add(Calendar.MINUTE, minuteDelay);
  304. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  305. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  306. Date date = calendar.getTime();
  307. persPositionParam.setOperateTime(date);
  308. if (StringUtils.isBlank(persPositionParam.getPersId())) {
  309. persPositionParam.setPersId(request.getHeader("persId"));
  310. }
  311. PageInfo<BisInspAllRlationPersDto> pageInfo = persPositionService.findPersPageById(persPositionParam);
  312. return buildSuccessResponse(pageInfo);
  313. }
  314. @ApiOperation("当前在线人员统计")
  315. @RequestMapping(value = "/findPersCount", method = RequestMethod.GET)
  316. public BaseResponse<OlBisInspOrgDto> findPersCount() {
  317. Calendar calendar = Calendar.getInstance();
  318. calendar.add(Calendar.MINUTE, minuteDelay);
  319. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  320. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  321. Date operateTime = calendar.getTime();
  322. OlBisInspOrgDto counts = persPositionService.findPersCount(operateTime, getCurrentOrgId());
  323. return buildSuccessResponse(counts);
  324. }
  325. @ApiOperation("当前人员所属督查节点查询")
  326. @RequestMapping(value = "/findNodeByPersId", method = RequestMethod.GET)
  327. public BaseResponse<List<BisInspAll>> findNodeByPersId(String persId) {
  328. Calendar calendar = Calendar.getInstance();
  329. calendar.add(Calendar.MINUTE, minuteDelay);
  330. calendar.add(Calendar.HOUR_OF_DAY, hourDelay);
  331. calendar.add(Calendar.DAY_OF_MONTH, dyaDelay);
  332. Date date = calendar.getTime();
  333. List<BisInspAll> list = persPositionService.findNodeByPersId(date, persId, getCurrentOrgId());
  334. return buildSuccessResponse(list);
  335. }
  336. @ApiOperation(value = "根据人员id获取轨迹路线", notes = "根据人员id获取轨迹路线")
  337. @RequestMapping(value = "/fingPositionByPersid", method = RequestMethod.GET)
  338. public BaseResponse<PersPosition> fingPositionByPersid(@ApiParam(name = "persid", value = "人员id", required = true) @RequestParam String persid,
  339. @ApiParam(name = "sttm", value = "开始时间", required = false) @RequestParam(required = false) String sttm,
  340. @ApiParam(name = "entm", value = "结束时间", required = false) @RequestParam(required = false) String entm) {
  341. PersPosition persPosition = persPositionService.fingPositionByPersid(persid, sttm, entm,getCurrentLoginUser(),getCurrentOrgId());
  342. return buildSuccessResponse(persPosition);
  343. }
  344. @ApiOperation(value = "获取轨迹列表", notes = "获取轨迹列表")
  345. @RequestMapping(value = "/fingPositionList", method = RequestMethod.POST)
  346. public BaseResponse<PageInfo<PersPosition>> fingPositionList(@RequestBody PersPositionBaseParam persPositionBaseParam) {
  347. PageInfo<PersPosition> list = persPositionService.fingPositionList(persPositionBaseParam);
  348. return buildSuccessResponse(list);
  349. }
  350. }