ApiGisSurveyController.java 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203
  1. package com.shkpr.service.alambizplugin.controller;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.databind.module.SimpleModule;
  5. import com.global.base.log.LogLevelFlag;
  6. import com.global.base.log.LogPrintMgr;
  7. import com.shkpr.service.alambizplugin.apiparam.GisSurveyCRSParams;
  8. import com.shkpr.service.alambizplugin.apiparam.GisSurveyCheckParams;
  9. import com.shkpr.service.alambizplugin.apiparam.GisSurveyThirdExportParams;
  10. import com.shkpr.service.alambizplugin.apiparam.GisSurveyThirdImportParams;
  11. import com.shkpr.service.alambizplugin.bizservice.GisSurveyCadConvertBizService;
  12. import com.shkpr.service.alambizplugin.bizservice.GisSurveySystemCheckBizService;
  13. import com.shkpr.service.alambizplugin.bizservice.GisSurveyThirdExportBizService;
  14. import com.shkpr.service.alambizplugin.bizservice.GisSurveyThirdImportBizService;
  15. import com.shkpr.service.alambizplugin.commtools.CRSUtil;
  16. import com.shkpr.service.alambizplugin.commtools.CommTool;
  17. import com.shkpr.service.alambizplugin.constants.ApiURI;
  18. import com.shkpr.service.alambizplugin.constants.CadEnum;
  19. import com.shkpr.service.alambizplugin.constants.CommAsyncStatusEnum;
  20. import com.shkpr.service.alambizplugin.constants.FileTypeEnum;
  21. import com.shkpr.service.alambizplugin.constants.GisSurveyImportStatusEnum;
  22. import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
  23. import com.shkpr.service.alambizplugin.constants.ResponseCode;
  24. import com.shkpr.service.alambizplugin.controllerfilter.TokenAuthenticationService;
  25. import com.shkpr.service.alambizplugin.controllerserializer.GeometrySerializer;
  26. import com.shkpr.service.alambizplugin.controllervalid.CommonParamValidSK;
  27. import com.shkpr.service.alambizplugin.dbdao.services.GisSurveyLayerApplyThirdCopyServiceImpl;
  28. import com.shkpr.service.alambizplugin.dbdao.services.intef.GisSurveyLayerApplyService;
  29. import com.shkpr.service.alambizplugin.dto.CommAsyncResult;
  30. import com.shkpr.service.alambizplugin.dto.CommCRSInfo;
  31. import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApplyThirdCopy;
  32. import com.shkpr.service.alambizplugin.dto.GisSurveySystemCheckResultDetail;
  33. import com.shkpr.service.alambizplugin.dto.GisSurveyThirdImportResult;
  34. import com.shkpr.service.alambizplugin.dto.PageResponse;
  35. import com.shkpr.service.alambizplugin.dto.ResponseRes;
  36. import com.shkpr.service.alambizplugin.exception.SelfException;
  37. import org.apache.commons.collections4.CollectionUtils;
  38. import org.apache.commons.lang3.StringUtils;
  39. import org.locationtech.jts.geom.Geometry;
  40. import org.springframework.data.domain.Pageable;
  41. import org.springframework.data.web.PageableDefault;
  42. import org.springframework.validation.BindingResult;
  43. import org.springframework.validation.annotation.Validated;
  44. import org.springframework.web.bind.annotation.GetMapping;
  45. import org.springframework.web.bind.annotation.PostMapping;
  46. import org.springframework.web.bind.annotation.RequestBody;
  47. import org.springframework.web.bind.annotation.RequestHeader;
  48. import org.springframework.web.bind.annotation.RequestMapping;
  49. import org.springframework.web.bind.annotation.RequestParam;
  50. import org.springframework.web.bind.annotation.RestController;
  51. import org.springframework.web.multipart.MultipartFile;
  52. import javax.servlet.http.HttpServletRequest;
  53. import java.util.List;
  54. import java.util.Map;
  55. import java.util.Objects;
  56. import java.util.concurrent.atomic.AtomicInteger;
  57. @RequestMapping(ApiURI.URI_GIS_SURVEY_H)
  58. @RestController
  59. public class ApiGisSurveyController {
  60. //log
  61. private final String mStrClassName;
  62. private final String mBizType;
  63. //计数器
  64. private final AtomicInteger mSeqSysCheckReq;
  65. private final AtomicInteger mSeqSysCheckCancelReq;
  66. private final AtomicInteger mSeqThirdImportReq;
  67. private final AtomicInteger mSeqThirdImportGetReq;
  68. private final AtomicInteger mSeqThirdImportCancelReq;
  69. private final AtomicInteger mSeqThirdImportPreviewReq;
  70. private final AtomicInteger mSeqThirdImportCommitReq;
  71. private final AtomicInteger mSeqCadConvertReq;
  72. private final AtomicInteger mSeqThirdExportReq;
  73. private final AtomicInteger mSeqThirdExportGetReq;
  74. private final AtomicInteger mSeqCadConvertGetReq;
  75. private final AtomicInteger mSeqCrsGetListReq;
  76. private final AtomicInteger mSeqCrsGetInfoReq;
  77. private final ObjectMapper objectMapper;
  78. private final GisSurveySystemCheckBizService systemCheckBizService;
  79. private final GisSurveyThirdImportBizService thirdImportBizService;
  80. private final GisSurveyThirdExportBizService thirdExportBizService;
  81. private final GisSurveyCadConvertBizService cadConvertBizService;
  82. private final GisSurveyLayerApplyService layerApplyService;
  83. private final GisSurveyLayerApplyThirdCopyServiceImpl layerApplyThirdCopyService;
  84. public ApiGisSurveyController(ObjectMapper objectMapper
  85. , GisSurveySystemCheckBizService systemCheckBizService
  86. , GisSurveyThirdImportBizService thirdImportBizService
  87. , GisSurveyThirdExportBizService thirdExportBizService
  88. , GisSurveyCadConvertBizService cadConvertBizService
  89. , GisSurveyLayerApplyService layerApplyService
  90. , GisSurveyLayerApplyThirdCopyServiceImpl layerApplyThirdCopyService) {
  91. mStrClassName = "ApiGisSurveyController";
  92. mBizType = LogFlagBusiType.BUSI_GIS_SURVEY.toStrValue();
  93. mSeqSysCheckReq = new AtomicInteger(0);
  94. mSeqSysCheckCancelReq = new AtomicInteger(0);
  95. mSeqThirdImportReq = new AtomicInteger(0);
  96. mSeqThirdImportGetReq = new AtomicInteger(0);
  97. mSeqThirdImportCancelReq = new AtomicInteger(0);
  98. mSeqThirdImportPreviewReq = new AtomicInteger(0);
  99. mSeqThirdImportCommitReq = new AtomicInteger(0);
  100. mSeqThirdExportReq = new AtomicInteger(0);
  101. mSeqThirdExportGetReq = new AtomicInteger(0);
  102. mSeqCadConvertReq = new AtomicInteger(0);
  103. mSeqCadConvertGetReq = new AtomicInteger(0);
  104. mSeqCrsGetListReq = new AtomicInteger(0);
  105. mSeqCrsGetInfoReq = new AtomicInteger(0);
  106. this.objectMapper = objectMapper;
  107. this.systemCheckBizService = systemCheckBizService;
  108. this.thirdImportBizService = thirdImportBizService;
  109. this.thirdExportBizService = thirdExportBizService;
  110. this.cadConvertBizService = cadConvertBizService;
  111. this.layerApplyService = layerApplyService;
  112. this.layerApplyThirdCopyService = layerApplyThirdCopyService;
  113. }
  114. /**
  115. * 执行系统检查
  116. *
  117. * @param request request
  118. * @param strClientType 客户端类型
  119. * @param strUserAgent 用户信息
  120. * @param oJsonParam 参数
  121. * @param bindRes bindingResult
  122. * @return 执行状态
  123. * @throws SelfException selfException
  124. */
  125. @PostMapping(value = ApiURI.URI_XXX_SYS_CHECK)
  126. public ResponseRes<String> sysCheck(HttpServletRequest request
  127. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  128. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  129. , @RequestBody(required = false) @Validated(value = {CommonParamValidSK.class}) GisSurveyCheckParams oJsonParam
  130. , BindingResult bindRes) throws SelfException {
  131. //参数校验
  132. final String URI_PATH = request.getRequestURI();
  133. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  134. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  135. if (oJsonParam == null || oJsonParam.getSubitemKeys() == null || bindRes.hasErrors() || !oJsonParam.checkValid()) {
  136. throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
  137. , String.format(ApiURI.EXCEPTION_FORMAT
  138. , strPlatform
  139. , URI_PATH
  140. , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
  141. }
  142. //begin
  143. long llReqBefore = System.currentTimeMillis();
  144. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqSysCheckReq.incrementAndGet());
  145. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  146. , String.format("%s:%s seq:{%s} param:%s begin====>"
  147. , strPlatform
  148. , URI_PATH
  149. , strRunSeq
  150. , oJsonParam));
  151. //构建result
  152. ResponseRes<String> resResult = new ResponseRes<>();
  153. resResult.setRescode(ResponseCode.RESULT_SYSTEM_CHECK_FAILED.toStrCode());
  154. resResult.setResmsg(ResponseCode.RESULT_SYSTEM_CHECK_FAILED.toStrMsg());
  155. //执行系统检查
  156. CommAsyncResult<Map<String, GisSurveySystemCheckResultDetail>> result = systemCheckBizService.sysCheckFun(oJsonParam);
  157. String resultStr = null;
  158. try {
  159. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  160. } catch (JsonProcessingException e) {
  161. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  162. , String.format("Json序列化异常: error:%s", e));
  163. }
  164. //执行成功
  165. if (resultStr != null && !Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  166. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  167. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  168. resResult.setResdata(resultStr);
  169. }
  170. //执行失败
  171. if (resultStr != null && Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  172. resResult.setResdata(resultStr);
  173. }
  174. //结果为空
  175. if (resultStr == null) {
  176. resResult.setRescode(ResponseCode.RESULT_SYSTEM_CHECK_RESULT_NOT_FOUND.toStrCode());
  177. resResult.setResmsg(ResponseCode.RESULT_SYSTEM_CHECK_RESULT_NOT_FOUND.toStrMsg());
  178. }
  179. //end
  180. resResult.setTimestamp(System.currentTimeMillis());
  181. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  182. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  183. , strPlatform
  184. , URI_PATH
  185. , strRunSeq
  186. , resResult.getRescode()
  187. , resResult.getResmsg()
  188. , resResult.getTimestamp() - llReqBefore));
  189. return resResult;
  190. }
  191. /**
  192. * 清除系统检查
  193. *
  194. * @param request request
  195. * @param strClientType 客户端类型
  196. * @param strUserAgent 用户信息
  197. * @param oJsonParam 参数
  198. * @param bindRes bindingResult
  199. * @return 清除状态
  200. * @throws SelfException selfException
  201. */
  202. @PostMapping(value = ApiURI.URI_XXX_SYS_CHECK_CANCEL)
  203. public ResponseRes<?> cancelCheck(HttpServletRequest request
  204. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  205. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  206. , @RequestBody(required = false) @Validated(value = {CommonParamValidSK.class}) GisSurveyCheckParams oJsonParam
  207. , BindingResult bindRes) throws Exception {
  208. //入参校验
  209. final String URI_PATH = request.getRequestURI();
  210. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  211. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  212. if (oJsonParam == null || bindRes.hasErrors() || !oJsonParam.checkValid()) {
  213. throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
  214. , String.format(ApiURI.EXCEPTION_FORMAT
  215. , strPlatform
  216. , URI_PATH
  217. , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
  218. }
  219. //begin
  220. long llReqBefore = System.currentTimeMillis();
  221. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqSysCheckCancelReq.incrementAndGet());
  222. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  223. , String.format("%s:%s seq:{%s} param:%s begin====>"
  224. , strPlatform
  225. , URI_PATH
  226. , strRunSeq
  227. , oJsonParam));
  228. //构建result
  229. ResponseRes<Boolean> resResult = new ResponseRes<>();
  230. resResult.setRescode(ResponseCode.RESULT_SYSTEM_CHECK_CANCEL_FAILED.toStrCode());
  231. resResult.setResmsg(ResponseCode.RESULT_SYSTEM_CHECK_CANCEL_FAILED.toStrMsg());
  232. //清除检查
  233. Integer cancelCheck = systemCheckBizService.cancelCheck(oJsonParam);
  234. //成功
  235. if (Objects.equals(cancelCheck, CommAsyncStatusEnum.SUCCESS.getCode())) {
  236. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  237. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  238. }
  239. //不存在
  240. else if (Objects.equals(cancelCheck, CommAsyncStatusEnum.NOT_EXISTS.getCode())) {
  241. resResult.setRescode(ResponseCode.RESULT_SYSTEM_CHECK_NOT_FOUND.toStrCode());
  242. resResult.setResmsg(ResponseCode.RESULT_SYSTEM_CHECK_NOT_FOUND.toStrMsg());
  243. }
  244. //end
  245. resResult.setTimestamp(System.currentTimeMillis());
  246. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  247. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  248. , strPlatform
  249. , URI_PATH
  250. , strRunSeq
  251. , resResult.getRescode()
  252. , resResult.getResmsg()
  253. , resResult.getTimestamp() - llReqBefore));
  254. return resResult;
  255. }
  256. /**
  257. * 执行第三方导入
  258. *
  259. * @param request request
  260. * @param strClientType 客户端类型
  261. * @param strUserAgent 用户信息
  262. * @param files 文件列表
  263. * @param operator 操作人
  264. * @param jobId 任务id
  265. * @param nature 用水性质,supply/drain
  266. * @param resetNo 是否重置点号
  267. * @param ignoreFail 是否忽略失败
  268. * @return 第三方导入结果
  269. */
  270. @PostMapping(value = ApiURI.URI_XXX_THIRD_IMPORT)
  271. public ResponseRes<String> thirdImport(HttpServletRequest request
  272. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  273. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  274. , @RequestParam(value = "files", required = false) List<MultipartFile> files
  275. , @RequestParam(value = "operator", required = false) String operator
  276. , @RequestParam(value = "jobId", required = false) String jobId
  277. , @RequestParam(value = "nature", required = false) String nature
  278. , @RequestParam(value = "resetNo", required = false) Boolean resetNo
  279. , @RequestParam(value = "checkConstraint", required = false, defaultValue = "false") Boolean checkConstraint
  280. , @RequestParam(value = "ignoreFail", required = false, defaultValue = "false") String ignoreFail) throws SelfException {
  281. //入参校验
  282. final String URI_PATH = request.getRequestURI();
  283. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  284. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  285. if (StringUtils.isAnyBlank(operator, jobId, nature) || StringUtils.length(jobId) > 64
  286. || CollectionUtils.isEmpty(files) || resetNo == null) {
  287. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  288. , String.format(ApiURI.EXCEPTION_FORMAT
  289. , strPlatform
  290. , URI_PATH
  291. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  292. }
  293. //构建入参数
  294. GisSurveyThirdImportParams params = new GisSurveyThirdImportParams(files, operator, jobId, nature, resetNo, checkConstraint, Boolean.parseBoolean(ignoreFail));
  295. //begin
  296. long llReqBefore = System.currentTimeMillis();
  297. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdImportReq.incrementAndGet());
  298. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  299. , String.format("%s:%s seq:{%s} param:%s begin====>"
  300. , strPlatform
  301. , URI_PATH
  302. , strRunSeq
  303. , params));
  304. //构建result
  305. ResponseRes<String> resResult = new ResponseRes<>();
  306. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  307. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  308. //执行第三方导入
  309. GisSurveyThirdImportResult result = thirdImportBizService.thirdImport(params);
  310. String resultStr = null;
  311. try {
  312. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  313. } catch (JsonProcessingException e) {
  314. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  315. , String.format("Json序列化异常: error:%s", e));
  316. }
  317. //执行成功
  318. if (resultStr != null && !Objects.equals(result.getImportStatus(), GisSurveyImportStatusEnum.FAIL.getCode())) {
  319. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  320. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  321. resResult.setResdata(resultStr);
  322. }
  323. //执行失败
  324. if (resultStr != null && Objects.equals(result.getImportStatus(), GisSurveyImportStatusEnum.FAIL.getCode())) {
  325. resResult.setResdata(resultStr);
  326. }
  327. //结果为空
  328. if (resultStr == null) {
  329. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrCode());
  330. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrMsg());
  331. }
  332. //end
  333. resResult.setTimestamp(System.currentTimeMillis());
  334. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  335. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  336. , strPlatform
  337. , URI_PATH
  338. , strRunSeq
  339. , resResult.getRescode()
  340. , resResult.getResmsg()
  341. , resResult.getTimestamp() - llReqBefore));
  342. return resResult;
  343. }
  344. /**
  345. * 获取第三方导入结果
  346. *
  347. * @param request request
  348. * @param strClientType 客户端类型
  349. * @param strUserAgent 用户信息
  350. * @param jobId 任务id
  351. * @param ignoreFail 是否忽略错误
  352. * @return 第三方导入结果
  353. */
  354. @GetMapping(value = ApiURI.URI_XXX_THIRD_IMPORT_GET)
  355. public ResponseRes<String> thirdImportGet(HttpServletRequest request
  356. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  357. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  358. , @RequestParam(value = "jobId", required = false) String jobId
  359. , @RequestParam(value = "ignoreFail", required = false, defaultValue = "false") String ignoreFail) throws SelfException {
  360. //入参校验
  361. final String URI_PATH = request.getRequestURI();
  362. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  363. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  364. if (StringUtils.isAnyBlank(jobId) || StringUtils.length(jobId) > 64) {
  365. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  366. , String.format(ApiURI.EXCEPTION_FORMAT
  367. , strPlatform
  368. , URI_PATH
  369. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  370. }
  371. //构建入参数
  372. GisSurveyThirdImportParams params = new GisSurveyThirdImportParams(jobId, Boolean.parseBoolean(ignoreFail));
  373. //begin
  374. long llReqBefore = System.currentTimeMillis();
  375. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdImportGetReq.incrementAndGet());
  376. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  377. , String.format("%s:%s seq:{%s} param:%s begin====>"
  378. , strPlatform
  379. , URI_PATH
  380. , strRunSeq
  381. , jobId));
  382. //构建result
  383. ResponseRes<String> resResult = new ResponseRes<>();
  384. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  385. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  386. //执行cad转换
  387. GisSurveyThirdImportResult result = thirdImportBizService.getResult(params);
  388. String resultStr = null;
  389. try {
  390. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  391. } catch (JsonProcessingException e) {
  392. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  393. , String.format("Json序列化异常: error:%s", e));
  394. }
  395. //执行成功
  396. if (resultStr != null && !Objects.equals(result.getImportStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  397. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  398. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  399. resResult.setResdata(resultStr);
  400. }
  401. //执行失败
  402. if (resultStr != null && Objects.equals(result.getImportStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  403. resResult.setResdata(resultStr);
  404. }
  405. //不存在
  406. if (resultStr == null) {
  407. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrCode());
  408. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrMsg());
  409. }
  410. //end
  411. resResult.setTimestamp(System.currentTimeMillis());
  412. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  413. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  414. , strPlatform
  415. , URI_PATH
  416. , strRunSeq
  417. , resResult.getRescode()
  418. , resResult.getResmsg()
  419. , resResult.getTimestamp() - llReqBefore));
  420. return resResult;
  421. }
  422. /**
  423. * 清除第三方导入
  424. *
  425. * @param request request
  426. * @param strClientType 客户端类型
  427. * @param strUserAgent 用户信息
  428. * @param jobId 任务id
  429. * @return 清除状态
  430. * @throws SelfException selfException
  431. */
  432. @GetMapping(value = ApiURI.URI_XXX_THIRD_IMPORT_CANCEL)
  433. public ResponseRes<?> cancelImport(HttpServletRequest request
  434. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  435. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  436. , @RequestParam("jobId") String jobId) throws Exception {
  437. //入参校验
  438. final String URI_PATH = request.getRequestURI();
  439. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  440. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  441. if (StringUtils.isBlank(jobId) || StringUtils.length(jobId) > 64) {
  442. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  443. , String.format(ApiURI.EXCEPTION_FORMAT
  444. , strPlatform
  445. , URI_PATH
  446. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  447. }
  448. //begin
  449. long llReqBefore = System.currentTimeMillis();
  450. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdImportCancelReq.incrementAndGet());
  451. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  452. , String.format("%s:%s seq:{%s} param:%s begin====>"
  453. , strPlatform
  454. , URI_PATH
  455. , strRunSeq
  456. , jobId));
  457. //构建result
  458. ResponseRes<Boolean> resResult = new ResponseRes<>();
  459. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  460. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  461. //清除导入
  462. Integer cancelCheck = thirdImportBizService.cancelImport(jobId);
  463. //成功
  464. if (Objects.equals(cancelCheck, CommAsyncStatusEnum.SUCCESS.getCode())) {
  465. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  466. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  467. }
  468. //不存在
  469. else if (Objects.equals(cancelCheck, CommAsyncStatusEnum.NOT_EXISTS.getCode())) {
  470. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrCode());
  471. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrMsg());
  472. }
  473. //end
  474. resResult.setTimestamp(System.currentTimeMillis());
  475. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  476. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  477. , strPlatform
  478. , URI_PATH
  479. , strRunSeq
  480. , resResult.getRescode()
  481. , resResult.getResmsg()
  482. , resResult.getTimestamp() - llReqBefore));
  483. return resResult;
  484. }
  485. /**
  486. * 预览第三方导入
  487. *
  488. * @param request request
  489. * @param strClientType 客户端类型
  490. * @param strUserAgent 用户信息
  491. * @param jobId 任务id
  492. * @param pageable 分页
  493. * @return 清除状态
  494. * @throws SelfException selfException
  495. */
  496. @GetMapping(value = ApiURI.URI_XXX_THIRD_IMPORT_PREVIEW)
  497. public ResponseRes<String> previewImport(HttpServletRequest request
  498. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  499. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  500. , @RequestParam("jobId") String jobId, @PageableDefault() Pageable pageable) throws Exception {
  501. //入参校验
  502. final String URI_PATH = request.getRequestURI();
  503. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  504. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  505. if (StringUtils.isBlank(jobId) || StringUtils.length(jobId) > 64) {
  506. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  507. , String.format(ApiURI.EXCEPTION_FORMAT
  508. , strPlatform
  509. , URI_PATH
  510. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  511. }
  512. //begin
  513. long llReqBefore = System.currentTimeMillis();
  514. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdImportPreviewReq.incrementAndGet());
  515. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  516. , String.format("%s:%s seq:{%s} param:%s begin====>"
  517. , strPlatform
  518. , URI_PATH
  519. , strRunSeq
  520. , jobId));
  521. //构建result
  522. ResponseRes<String> resResult = new ResponseRes<>();
  523. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  524. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  525. //查询
  526. PageResponse<GisSurveyLayerApplyThirdCopy> pageResponse = layerApplyThirdCopyService.findByJobId(jobId, pageable);
  527. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  528. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  529. String pageStr = null;
  530. try {
  531. if (pageResponse != null) pageStr = objectMapper.writeValueAsString(pageResponse);
  532. } catch (JsonProcessingException e) {
  533. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  534. , String.format("Json序列化异常: error:%s", e));
  535. }
  536. resResult.setResdata(pageStr);
  537. //end
  538. resResult.setTimestamp(System.currentTimeMillis());
  539. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  540. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  541. , strPlatform
  542. , URI_PATH
  543. , strRunSeq
  544. , resResult.getRescode()
  545. , resResult.getResmsg()
  546. , resResult.getTimestamp() - llReqBefore));
  547. return resResult;
  548. }
  549. /**
  550. * 提交第三方导入
  551. *
  552. * @param request request
  553. * @param strClientType 客户端类型
  554. * @param strUserAgent 用户信息
  555. * @param jobId 任务id
  556. * @param operator 操作人
  557. * @return 清除状态
  558. * @throws SelfException selfException
  559. */
  560. @GetMapping(value = ApiURI.URI_XXX_THIRD_IMPORT_COMMIT)
  561. public ResponseRes<?> commitImport(HttpServletRequest request
  562. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  563. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  564. , @RequestParam("jobId") String jobId, @RequestParam("operator") String operator) throws Exception {
  565. //入参校验
  566. final String URI_PATH = request.getRequestURI();
  567. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  568. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  569. if (StringUtils.isBlank(jobId) || StringUtils.length(jobId) > 64
  570. || StringUtils.isBlank(operator) || StringUtils.length(operator) > 64) {
  571. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  572. , String.format(ApiURI.EXCEPTION_FORMAT
  573. , strPlatform
  574. , URI_PATH
  575. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  576. }
  577. //begin
  578. long llReqBefore = System.currentTimeMillis();
  579. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdImportCommitReq.incrementAndGet());
  580. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  581. , String.format("%s:%s seq:{%s} param:%s begin====>"
  582. , strPlatform
  583. , URI_PATH
  584. , strRunSeq
  585. , jobId));
  586. //构建result
  587. ResponseRes<?> resResult = new ResponseRes<>();
  588. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  589. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  590. //提交导入
  591. Boolean commitStatus = layerApplyService.mergeCopy(jobId, operator);
  592. //成功
  593. if (Objects.equals(commitStatus, Boolean.TRUE)) {
  594. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  595. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  596. }
  597. //end
  598. resResult.setTimestamp(System.currentTimeMillis());
  599. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  600. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  601. , strPlatform
  602. , URI_PATH
  603. , strRunSeq
  604. , resResult.getRescode()
  605. , resResult.getResmsg()
  606. , resResult.getTimestamp() - llReqBefore));
  607. return resResult;
  608. }
  609. /**
  610. * 执行第三方导出
  611. *
  612. * @param request request
  613. * @param strClientType 客户端类型
  614. * @param strUserAgent 用户信息
  615. * @param oJsonParam 入参
  616. * @return cad转换结果
  617. */
  618. @PostMapping(value = ApiURI.URI_XXX_THIRD_EXPORT)
  619. public ResponseRes<String> thirdExport(HttpServletRequest request
  620. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  621. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  622. , @RequestBody(required = false) @Validated(value = {CommonParamValidSK.class}) GisSurveyThirdExportParams oJsonParam
  623. , BindingResult bindRes) throws SelfException {
  624. //入参校验
  625. final String URI_PATH = request.getRequestURI();
  626. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  627. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  628. if (oJsonParam == null || bindRes.hasErrors()) {
  629. throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
  630. , String.format(ApiURI.EXCEPTION_FORMAT
  631. , strPlatform
  632. , URI_PATH
  633. , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
  634. }
  635. //begin
  636. long llReqBefore = System.currentTimeMillis();
  637. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdExportReq.incrementAndGet());
  638. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  639. , String.format("%s:%s seq:{%s} param:%s begin====>"
  640. , strPlatform
  641. , URI_PATH
  642. , strRunSeq
  643. , oJsonParam));
  644. //构建result
  645. ResponseRes<String> resResult = new ResponseRes<>();
  646. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  647. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  648. //导出类型枚举
  649. FileTypeEnum fileTypeEnum = FileTypeEnum.getFileType(oJsonParam.getFileType());
  650. if (fileTypeEnum == null) fileTypeEnum = FileTypeEnum.EXCEL;
  651. //执行第三方导出
  652. CommAsyncResult<Map<String, String>> result = thirdExportBizService.thirdExport(oJsonParam.getJobId(), fileTypeEnum, oJsonParam.getOperator());
  653. String resultStr = null;
  654. try {
  655. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  656. } catch (JsonProcessingException e) {
  657. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  658. , String.format("Json序列化异常: error:%s", e));
  659. }
  660. //执行成功
  661. if (resultStr != null && !Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  662. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  663. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  664. resResult.setResdata(resultStr);
  665. }
  666. //执行失败
  667. if (resultStr != null && Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  668. resResult.setResdata(resultStr);
  669. }
  670. //end
  671. resResult.setTimestamp(System.currentTimeMillis());
  672. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  673. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  674. , strPlatform
  675. , URI_PATH
  676. , strRunSeq
  677. , resResult.getRescode()
  678. , resResult.getResmsg()
  679. , resResult.getTimestamp() - llReqBefore));
  680. return resResult;
  681. }
  682. /**
  683. * 获取第三方导出结果
  684. *
  685. * @param request request
  686. * @param strClientType 客户端类型
  687. * @param strUserAgent 用户信息
  688. * @param jobId 任务id
  689. * @return cad转换结果
  690. */
  691. @GetMapping(value = ApiURI.URI_XXX_THIRD_EXPORT_GET)
  692. public ResponseRes<String> thirdExportGet(HttpServletRequest request
  693. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  694. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  695. , @RequestParam(value = "jobId", required = false) String jobId) throws SelfException {
  696. //入参校验
  697. final String URI_PATH = request.getRequestURI();
  698. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  699. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  700. if (StringUtils.isAnyBlank(jobId) || StringUtils.length(jobId) > 64) {
  701. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  702. , String.format(ApiURI.EXCEPTION_FORMAT
  703. , strPlatform
  704. , URI_PATH
  705. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  706. }
  707. //begin
  708. long llReqBefore = System.currentTimeMillis();
  709. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqThirdExportGetReq.incrementAndGet());
  710. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  711. , String.format("%s:%s seq:{%s} param:%s begin====>"
  712. , strPlatform
  713. , URI_PATH
  714. , strRunSeq
  715. , jobId));
  716. //构建result
  717. ResponseRes<String> resResult = new ResponseRes<>();
  718. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  719. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  720. //执行第三方导出
  721. CommAsyncResult<Map<String, String>> result = thirdExportBizService.getResult(jobId);
  722. String resultStr = null;
  723. try {
  724. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  725. } catch (JsonProcessingException e) {
  726. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  727. , String.format("Json序列化异常: error:%s", e));
  728. }
  729. //执行成功
  730. if (resultStr != null && !Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  731. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  732. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  733. resResult.setResdata(resultStr);
  734. }
  735. //执行失败
  736. if (resultStr != null && Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  737. resResult.setResdata(resultStr);
  738. }
  739. //不存在
  740. if (resultStr == null) {
  741. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrCode());
  742. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrMsg());
  743. }
  744. //end
  745. resResult.setTimestamp(System.currentTimeMillis());
  746. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  747. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  748. , strPlatform
  749. , URI_PATH
  750. , strRunSeq
  751. , resResult.getRescode()
  752. , resResult.getResmsg()
  753. , resResult.getTimestamp() - llReqBefore));
  754. return resResult;
  755. }
  756. /**
  757. * 执行cad转换
  758. *
  759. * @param request request
  760. * @param strClientType 客户端类型
  761. * @param strUserAgent 用户信息
  762. * @param file 文件
  763. * @param convertId 转换id
  764. * @param outputExtension 输出扩展名
  765. * @param operator 操作人
  766. * @return cad转换结果
  767. */
  768. @PostMapping(value = ApiURI.URI_XXX_CAD_CONVERT)
  769. public ResponseRes<String> cadConvert(HttpServletRequest request
  770. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  771. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  772. , @RequestParam(value = "file", required = false) MultipartFile file
  773. , @RequestParam(value = "convertId", required = false) String convertId
  774. , @RequestParam(value = "outputExtension", required = false) String outputExtension
  775. , @RequestParam(value = "operator", required = false, defaultValue = "") String operator) throws SelfException {
  776. //入参校验
  777. final String URI_PATH = request.getRequestURI();
  778. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  779. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  780. if (StringUtils.isAnyBlank(convertId, outputExtension) || StringUtils.length(convertId) > 64
  781. || StringUtils.length(outputExtension) > 64) {
  782. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  783. , String.format(ApiURI.EXCEPTION_FORMAT
  784. , strPlatform
  785. , URI_PATH
  786. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  787. }
  788. //文件校验
  789. if (file == null || file.isEmpty()) {
  790. throw new SelfException(ResponseCode.RESULT_FILE_EMPTY_ROWS.toStrCode()
  791. , String.format(ApiURI.EXCEPTION_FORMAT
  792. , strPlatform
  793. , URI_PATH
  794. , ResponseCode.RESULT_FILE_EMPTY_ROWS.toStrMsg()));
  795. }
  796. String originalFilename = file.getOriginalFilename();
  797. if (originalFilename == null) {
  798. throw new SelfException(ResponseCode.RESULT_FILE_EMPTY_ROWS.toStrCode()
  799. , String.format(ApiURI.EXCEPTION_FORMAT
  800. , strPlatform
  801. , URI_PATH
  802. , ResponseCode.RESULT_FILE_EMPTY_ROWS.toStrMsg()));
  803. }
  804. //文件类型校验
  805. String inputExtension = originalFilename
  806. .substring(originalFilename.lastIndexOf(".") + 1)
  807. .toLowerCase();
  808. CadEnum inputCadEnum = CadEnum.getCadEnum(inputExtension);
  809. CadEnum outCadEnum = CadEnum.getCadEnum(outputExtension);
  810. if (inputCadEnum == null || outCadEnum == null
  811. || !inputCadEnum.getInput() || !outCadEnum.getOutput()) {
  812. throw new SelfException(ResponseCode.RESULT_FILE_INVALID_TYPE.toStrCode()
  813. , String.format(ApiURI.EXCEPTION_FORMAT
  814. , strPlatform
  815. , URI_PATH
  816. , ResponseCode.RESULT_FILE_INVALID_TYPE.toStrMsg()));
  817. }
  818. //begin
  819. long llReqBefore = System.currentTimeMillis();
  820. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqCadConvertReq.incrementAndGet());
  821. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  822. , String.format("%s:%s seq:{%s} param:%s begin====>"
  823. , strPlatform
  824. , URI_PATH
  825. , strRunSeq
  826. , convertId));
  827. //构建result
  828. ResponseRes<String> resResult = new ResponseRes<>();
  829. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  830. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  831. //执行cad转换
  832. CommAsyncResult<String> result = cadConvertBizService.cadConvert(file, convertId, outCadEnum, operator);
  833. String resultStr = null;
  834. try {
  835. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  836. } catch (JsonProcessingException e) {
  837. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  838. , String.format("Json序列化异常: error:%s", e));
  839. }
  840. //执行成功
  841. if (resultStr != null && !Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  842. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  843. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  844. resResult.setResdata(resultStr);
  845. }
  846. //执行失败
  847. if (resultStr != null && Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  848. resResult.setResdata(resultStr);
  849. }
  850. //end
  851. resResult.setTimestamp(System.currentTimeMillis());
  852. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  853. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  854. , strPlatform
  855. , URI_PATH
  856. , strRunSeq
  857. , resResult.getRescode()
  858. , resResult.getResmsg()
  859. , resResult.getTimestamp() - llReqBefore));
  860. return resResult;
  861. }
  862. /**
  863. * 获取cad转换结果
  864. *
  865. * @param request request
  866. * @param strClientType 客户端类型
  867. * @param strUserAgent 用户信息
  868. * @param convertId 转换id
  869. * @return cad转换结果
  870. */
  871. @GetMapping(value = ApiURI.URI_XXX_CAD_CONVERT_GET)
  872. public ResponseRes<String> cadConvertGet(HttpServletRequest request
  873. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  874. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  875. , @RequestParam(value = "convertId", required = false) String convertId) throws SelfException {
  876. //入参校验
  877. final String URI_PATH = request.getRequestURI();
  878. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  879. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  880. if (StringUtils.isAnyBlank(convertId) || StringUtils.length(convertId) > 64) {
  881. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  882. , String.format(ApiURI.EXCEPTION_FORMAT
  883. , strPlatform
  884. , URI_PATH
  885. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  886. }
  887. //begin
  888. long llReqBefore = System.currentTimeMillis();
  889. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqCadConvertGetReq.incrementAndGet());
  890. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  891. , String.format("%s:%s seq:{%s} param:%s begin====>"
  892. , strPlatform
  893. , URI_PATH
  894. , strRunSeq
  895. , convertId));
  896. //构建result
  897. ResponseRes<String> resResult = new ResponseRes<>();
  898. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrCode());
  899. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_FAILED.toStrMsg());
  900. //执行cad转换
  901. CommAsyncResult<String> result = cadConvertBizService.getResult(convertId);
  902. String resultStr = null;
  903. try {
  904. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  905. } catch (JsonProcessingException e) {
  906. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  907. , String.format("Json序列化异常: error:%s", e));
  908. }
  909. //执行成功
  910. if (resultStr != null && !Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  911. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  912. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  913. resResult.setResdata(resultStr);
  914. }
  915. //执行失败
  916. if (resultStr != null && Objects.equals(result.getStatus(), CommAsyncStatusEnum.FAIL.getCode())) {
  917. resResult.setResdata(resultStr);
  918. }
  919. //不存在
  920. if (resultStr == null) {
  921. resResult.setRescode(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrCode());
  922. resResult.setResmsg(ResponseCode.RESULT_ASYNC_TASK_NOT_FOUND.toStrMsg());
  923. }
  924. //end
  925. resResult.setTimestamp(System.currentTimeMillis());
  926. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  927. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  928. , strPlatform
  929. , URI_PATH
  930. , strRunSeq
  931. , resResult.getRescode()
  932. , resResult.getResmsg()
  933. , resResult.getTimestamp() - llReqBefore));
  934. return resResult;
  935. }
  936. /**
  937. * 获取坐标系列表
  938. *
  939. * @param request request
  940. * @param strClientType 客户端类型
  941. * @param strUserAgent 用户信息
  942. * @return crs列表
  943. */
  944. @GetMapping(value = ApiURI.URI_XXX_CRS_GET_LIST)
  945. public ResponseRes<String> crsGetList(HttpServletRequest request
  946. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  947. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent) {
  948. //入参校验
  949. final String URI_PATH = request.getRequestURI();
  950. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  951. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  952. //begin
  953. long llReqBefore = System.currentTimeMillis();
  954. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqCrsGetListReq.incrementAndGet());
  955. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  956. , String.format("%s:%s seq:{%s} begin====>"
  957. , strPlatform
  958. , URI_PATH
  959. , strRunSeq));
  960. //构建result
  961. ResponseRes<String> resResult = new ResponseRes<>();
  962. resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
  963. resResult.setResmsg(ResponseCode.RESULT_BAD.toStrMsg());
  964. //获取crs列表
  965. List<CRSUtil.Item> result = CRSUtil.getList();
  966. String resultStr = null;
  967. try {
  968. if (CollectionUtils.isNotEmpty(result)) resultStr = objectMapper.writeValueAsString(result);
  969. } catch (JsonProcessingException e) {
  970. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  971. , String.format("Json序列化异常: error:%s", e));
  972. }
  973. //执行成功
  974. if (resultStr != null) {
  975. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  976. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  977. resResult.setResdata(resultStr);
  978. }
  979. //end
  980. resResult.setTimestamp(System.currentTimeMillis());
  981. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  982. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  983. , strPlatform
  984. , URI_PATH
  985. , strRunSeq
  986. , resResult.getRescode()
  987. , resResult.getResmsg()
  988. , resResult.getTimestamp() - llReqBefore));
  989. return resResult;
  990. }
  991. /**
  992. * 获取坐标系信息
  993. *
  994. * @param request request
  995. * @param strClientType 客户端类型
  996. * @param strUserAgent 用户信息
  997. * @return crs信息
  998. */
  999. @GetMapping(value = ApiURI.URI_XXX_CRS_GET_INFO)
  1000. public ResponseRes<String> crsGetInfo(HttpServletRequest request
  1001. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  1002. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  1003. , @RequestParam(value = "code", required = false) String code) throws SelfException {
  1004. //入参校验
  1005. final String URI_PATH = request.getRequestURI();
  1006. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  1007. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  1008. if (StringUtils.isAnyBlank(code) || StringUtils.length(code) > 64) {
  1009. throw new SelfException(ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrCode()
  1010. , String.format(ApiURI.EXCEPTION_FORMAT
  1011. , strPlatform
  1012. , URI_PATH
  1013. , ResponseCode.STATUS_ERROR_PARAM_FORMAT.toStrMsg()));
  1014. }
  1015. //begin
  1016. long llReqBefore = System.currentTimeMillis();
  1017. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqCrsGetInfoReq.incrementAndGet());
  1018. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  1019. , String.format("%s:%s seq:{%s} begin====>"
  1020. , strPlatform
  1021. , URI_PATH
  1022. , strRunSeq));
  1023. //构建result
  1024. ResponseRes<String> resResult = new ResponseRes<>();
  1025. resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
  1026. resResult.setResmsg(ResponseCode.RESULT_BAD.toStrMsg());
  1027. //获取crs信息
  1028. CommCRSInfo result = CRSUtil.getInfo(code);
  1029. String resultStr = null;
  1030. try {
  1031. if (result != null) resultStr = objectMapper.writeValueAsString(result);
  1032. } catch (JsonProcessingException e) {
  1033. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  1034. , String.format("Json序列化异常: error:%s", e));
  1035. }
  1036. //执行成功
  1037. if (resultStr != null) {
  1038. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  1039. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  1040. resResult.setResdata(resultStr);
  1041. }
  1042. //end
  1043. resResult.setTimestamp(System.currentTimeMillis());
  1044. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  1045. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  1046. , strPlatform
  1047. , URI_PATH
  1048. , strRunSeq
  1049. , resResult.getRescode()
  1050. , resResult.getResmsg()
  1051. , resResult.getTimestamp() - llReqBefore));
  1052. return resResult;
  1053. }
  1054. /**
  1055. * 坐标系转换
  1056. *
  1057. * @param request request
  1058. * @param strClientType 客户端类型
  1059. * @param strUserAgent 用户信息
  1060. * @return crs信息
  1061. */
  1062. @PostMapping(value = ApiURI.URI_XXX_CRS_TRANSFORM)
  1063. public ResponseRes<String> crsTransform(HttpServletRequest request
  1064. , @RequestHeader(value = ApiURI.HEADER_CLIENT_TYPE, required = false) String strClientType
  1065. , @RequestHeader(value = ApiURI.HEADER_USER_AGENT, required = false) String strUserAgent
  1066. , @RequestBody(required = false) @Validated(value = {CommonParamValidSK.class}) GisSurveyCRSParams oJsonParam
  1067. , BindingResult bindRes) throws SelfException {
  1068. //入参校验
  1069. final String URI_PATH = request.getRequestURI();
  1070. final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
  1071. final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
  1072. if (oJsonParam == null || bindRes.hasErrors() || oJsonParam.getGeometry()==null) {
  1073. throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
  1074. , String.format(ApiURI.EXCEPTION_FORMAT
  1075. , strPlatform
  1076. , URI_PATH
  1077. , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
  1078. }
  1079. //begin
  1080. long llReqBefore = System.currentTimeMillis();
  1081. String strRunSeq = String.format("%d-%d", llReqBefore, mSeqCrsGetInfoReq.incrementAndGet());
  1082. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  1083. , String.format("%s:%s seq:{%s} begin====>"
  1084. , strPlatform
  1085. , URI_PATH
  1086. , strRunSeq));
  1087. //构建result
  1088. ResponseRes<String> resResult = new ResponseRes<>();
  1089. resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
  1090. resResult.setResmsg(ResponseCode.RESULT_BAD.toStrMsg());
  1091. //转换坐标系
  1092. Geometry result = CRSUtil.transform(oJsonParam.getGeometry(), oJsonParam.getSourceCRSCode(), oJsonParam.getTargetCRSCode());
  1093. String resultStr = null;
  1094. try {
  1095. if (result != null) {
  1096. //创建objectMapper,并注册geo序列化
  1097. ObjectMapper objectMapper = new ObjectMapper();
  1098. SimpleModule module = new SimpleModule();
  1099. module.addSerializer(Geometry.class, new GeometrySerializer());
  1100. objectMapper.registerModule(module);
  1101. resultStr = objectMapper.writeValueAsString(result);
  1102. }
  1103. } catch (JsonProcessingException e) {
  1104. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
  1105. , String.format("Json序列化异常: error:%s", e));
  1106. }
  1107. //执行成功
  1108. if (resultStr != null) {
  1109. resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
  1110. resResult.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
  1111. resResult.setResdata(resultStr);
  1112. }
  1113. //end
  1114. resResult.setTimestamp(System.currentTimeMillis());
  1115. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName, strUserId
  1116. , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
  1117. , strPlatform
  1118. , URI_PATH
  1119. , strRunSeq
  1120. , resResult.getRescode()
  1121. , resResult.getResmsg()
  1122. , resResult.getTimestamp() - llReqBefore));
  1123. return resResult;
  1124. }
  1125. }