AlipayController.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. package ieven.server.webapp.api;
  2. import com.mongodb.client.MongoCursor;
  3. import ieven.server.webapp.domain.LineInput;
  4. import ieven.server.webapp.domain.ModelIdInput;
  5. import ieven.server.webapp.domain.StaticPageInput;
  6. import ieven.server.webapp.domain.alipay.TFromToFileIds;
  7. import ieven.server.webapp.domain.data.DataMap;
  8. import ieven.server.webapp.domain.data.DataService;
  9. import ieven.server.webapp.domain.data.Fields;
  10. import ieven.server.webapp.domain.data.StaticInput;
  11. import ieven.server.webapp.domain.exporter.Exporter;
  12. import ieven.server.webapp.domain.file.LogicalFile;
  13. import ieven.server.webapp.domain.model.Model;
  14. import ieven.server.webapp.infrastructure.wrapper.Mapped;
  15. import ieven.server.webapp.service.alipay.AlipayService;
  16. import ieven.server.webapp.util.excel.PublicStatic;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.bson.Document;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.data.domain.Sort;
  21. import org.springframework.data.mongodb.core.MongoTemplate;
  22. import org.springframework.data.mongodb.core.query.Criteria;
  23. import org.springframework.data.mongodb.core.query.Query;
  24. import org.springframework.web.bind.annotation.PostMapping;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RestController;
  28. import java.io.IOException;
  29. import java.util.ArrayList;
  30. import java.util.HashSet;
  31. import java.util.List;
  32. import java.util.Set;
  33. import java.util.concurrent.ExecutionException;
  34. import java.util.concurrent.Future;
  35. @RestController
  36. @RequestMapping({"/alipay"})
  37. public class AlipayController {
  38. @Autowired
  39. private AlipayService alipayService;
  40. @Autowired
  41. private MongoTemplate mongoTemplate;
  42. @Autowired
  43. private DataService dataService;
  44. public AlipayController() {
  45. }
  46. @PostMapping({"/extractPersonInfo"})
  47. public Mapped extractPersonInfo(@RequestBody ModelIdInput modelIdInput)
  48. throws InterruptedException {
  49. String modelId = modelIdInput.getModelId();
  50. return modelId == null ? Mapped.ERROR("没有选择模型!") : this.alipayService.extractAll(modelId);
  51. }
  52. @PostMapping({"/viewDetailContent"})
  53. public Mapped viewDetailContent(@RequestBody LineInput input) {
  54. String modelId = input.getModelId();
  55. if (modelId == null) {
  56. return Mapped.ERROR("没有选择模型!");
  57. } else {
  58. String filename = input.getFilename();
  59. if (filename.equals("数据分析-对手透视") || filename.equals("数据分析-账户透视")) {
  60. String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
  61. input.setFileId(dateFileId);
  62. }
  63. String fileId = input.getFileId();
  64. String clickHeader = input.getClickHeader();
  65. String lineId = input.getLineId();
  66. int page = input.getPage();
  67. int pageSize = input.getPageSize();
  68. int skip = (page - 1) * pageSize;
  69. Criteria criteria = this.resolveDetailQuery(filename, fileId, lineId, clickHeader);
  70. if (criteria == null) {
  71. return Mapped.ERROR("未查询到明细");
  72. } else {
  73. Long total = this.dataService.countTotalByQuery(new Query(criteria));
  74. List<DataMap> dataMaps =
  75. this.mongoTemplate.find(
  76. (new Query(criteria)).skip(skip).limit(pageSize), DataMap.class);
  77. Mapped mapped = Mapped.OK();
  78. mapped.put("result", dataMaps);
  79. mapped.put("code", 200);
  80. mapped.put("page", page);
  81. mapped.put("total", total);
  82. mapped.put("fileId", fileId);
  83. mapped.put("pageSize", pageSize);
  84. return mapped;
  85. }
  86. }
  87. }
  88. @PostMapping({"/staticDetailContent"})
  89. public Mapped staticDetailContent(@RequestBody StaticPageInput input) {
  90. String modelId = input.getModelId();
  91. if (modelId == null) {
  92. return Mapped.ERROR("没有选择模型!");
  93. } else {
  94. String fileId = input.getFileId();
  95. String jythm = input.getJythm();
  96. String jydszh = input.getJydszh();
  97. int page = input.getPage();
  98. int pageSize = input.getPageSize();
  99. int skip = (page - 1) * pageSize;
  100. Criteria criteria = Criteria.where("fileId")
  101. .is(fileId)
  102. .and("交易主体户名")
  103. .is(jythm)
  104. .and("交易对手账号")
  105. .is(jydszh);
  106. if (criteria == null) {
  107. return Mapped.ERROR("未查询到明细");
  108. } else {
  109. Long total = this.dataService.countTotalByQuery(new Query(criteria));
  110. List<DataMap> dataMaps =
  111. this.mongoTemplate.find(
  112. (new Query(criteria)).skip(skip).limit(pageSize), DataMap.class);
  113. Mapped mapped = Mapped.OK();
  114. mapped.put("result", dataMaps);
  115. mapped.put("code", 200);
  116. mapped.put("page", page);
  117. mapped.put("total", total);
  118. mapped.put("fileId", fileId);
  119. mapped.put("pageSize", pageSize);
  120. return mapped;
  121. }
  122. }
  123. }
  124. @PostMapping({"/viewDetailHeaders"})
  125. public Mapped viewHeaders(@RequestBody LineInput input) {
  126. String modelId = input.getModelId();
  127. if (modelId == null) {
  128. return Mapped.ERROR("没有选择模型!");
  129. } else {
  130. String filename = input.getFilename();
  131. if (filename.equals("数据分析-对手透视") || filename.equals("数据分析-账户透视")) {
  132. String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
  133. input.setFileId(dateFileId);
  134. }
  135. String fileId = input.getFileId();
  136. TFromToFileIds oldFile =
  137. this.mongoTemplate.findOne(
  138. new Query(Criteria.where("toFileId").is(fileId)), TFromToFileIds.class);
  139. if (oldFile == null) {
  140. return Mapped.ERROR("未发现明细!");
  141. } else {
  142. String fromFileId = oldFile.getFromFileId();
  143. Fields fields = this.mongoTemplate.findOne(new Query(Criteria.where("fileId").is(fromFileId)), Fields.class);
  144. Mapped mapped = Mapped.OK();
  145. mapped.put("result", fields);
  146. return mapped;
  147. }
  148. }
  149. }
  150. private List<String> destFileId(String oriFileId) {
  151. Set<String> destFileIds = new HashSet<>();
  152. List<TFromToFileIds> oldFileList =
  153. this.mongoTemplate.find(
  154. new Query(Criteria.where("toFileId").is(oriFileId)), TFromToFileIds.class);
  155. for (TFromToFileIds t : oldFileList) {
  156. destFileIds.add(t.getFromFileId());
  157. }
  158. return new ArrayList<>(destFileIds);
  159. }
  160. @PostMapping({"/exportViewDetailContent"})
  161. public Mapped exportViewDetailContent(@RequestBody LineInput input) throws IOException {
  162. String modelId = input.getModelId();
  163. if (modelId == null) {
  164. return Mapped.ERROR("没有选择模型!");
  165. } else {
  166. String filename = input.getFilename();
  167. String fileId = input.getFileId();
  168. String clickHeader = input.getClickHeader();
  169. String lineId = input.getLineId();
  170. Criteria criteria = this.resolveDetailQuery(filename, fileId, lineId, clickHeader);
  171. if (input.getDeleteName() == 2) {
  172. criteria.andOperator(PublicStatic.getQuery());
  173. }
  174. if (criteria == null) {
  175. return Mapped.ERROR("未查询到明细");
  176. } else {
  177. Query query = new Query(criteria);
  178. MongoCursor<Document> cursor =
  179. this.mongoTemplate
  180. .getCollection("data")
  181. .find((query).getQueryObject())
  182. .batchSize(1000)
  183. .noCursorTimeout(true)
  184. .cursor();
  185. Exporter exporter = new Exporter();
  186. List<String> fileIds = this.destFileId(fileId);
  187. String exportFileId = exporter.export(cursor, fileIds.get(0), filename);
  188. Mapped mapped = Mapped.OK();
  189. mapped.put("result", exportFileId);
  190. return mapped;
  191. }
  192. }
  193. }
  194. @PostMapping({"/exportAllDetail"})
  195. public Mapped exportAllDetail(@RequestBody LineInput input) throws IOException {
  196. String modelId = input.getModelId();
  197. if (modelId == null) {
  198. return Mapped.ERROR("没有选择模型!");
  199. } else {
  200. String filename = input.getFilename();
  201. String fileId = input.getFileId();
  202. Criteria criteria = this.resolveDetailQuery(filename, fileId, null, null);
  203. if (criteria == null) {
  204. return Mapped.ERROR("未查询到明细");
  205. } else {
  206. MongoCursor<Document> cursor =
  207. this.mongoTemplate
  208. .getCollection("data")
  209. .find((new Query(criteria)).getQueryObject())
  210. .batchSize(1000)
  211. .noCursorTimeout(true)
  212. .cursor();
  213. Exporter exporter = new Exporter();
  214. List<String> fileIds = this.destFileId(fileId);
  215. if (StringUtils.isNotBlank(modelId) && filename == null) {
  216. Model model =
  217. mongoTemplate.findOne(new Query(Criteria.where("id").is(modelId)), Model.class);
  218. filename = model.getModelName();
  219. }
  220. String exportFileId = exporter.export(cursor, fileIds.get(0), filename);
  221. Mapped mapped = Mapped.OK();
  222. mapped.put("result", exportFileId);
  223. return mapped;
  224. }
  225. }
  226. }
  227. @PostMapping({"/getFileIdByName"})
  228. public Mapped getFileIdByName(@RequestBody LineInput input) {
  229. String modelId = input.getModelId();
  230. if (modelId == null) {
  231. return Mapped.ERROR("没有选择模型!");
  232. } else {
  233. String dateFileId = getFileId(input.getFilename(), modelId, mongoTemplate);
  234. Mapped mapped = Mapped.OK();
  235. mapped.put("result", dateFileId);
  236. mapped.put("code", 200);
  237. return mapped;
  238. }
  239. }
  240. protected String getFileId(String filename, String modelId, MongoTemplate mongoTemplate) {
  241. Query query =
  242. new Query(
  243. Criteria.where("modelId")
  244. .is(modelId)
  245. .and("filename")
  246. .is(filename)
  247. .and("generated")
  248. .is(Boolean.TRUE));
  249. LogicalFile oldFile = mongoTemplate.findOne(query, LogicalFile.class);
  250. if (oldFile != null) {
  251. return oldFile.getId();
  252. } else {
  253. return "";
  254. }
  255. }
  256. private Criteria resolveDetailQuery(
  257. String filename, String fileId, String lineId, String clickHeader) {
  258. List<String> fileIds = this.destFileId(fileId);
  259. Criteria criteria = Criteria.where("fileId");
  260. if (fileIds.size() == 1) {
  261. criteria.is(fileIds.get(0));
  262. } else if (fileIds.size() > 1) {
  263. criteria.in(fileIds);
  264. } else {
  265. return null;
  266. }
  267. DataMap dataMap;
  268. String dszfbyhid;
  269. if (filename.equals("反诈治安-账户透视")) {
  270. if (lineId == null) {
  271. return criteria;
  272. }
  273. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  274. if (dataMap == null) {
  275. return null;
  276. }
  277. dszfbyhid = (String) dataMap.get("交易主体账号");
  278. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  279. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  280. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  281. criteria.and("交易主体账号").is(dszfbyhid).and("交易主体的出入账标识").is("出账");
  282. }
  283. } else {
  284. criteria.and("交易主体账号").is(dszfbyhid).and("交易主体的出入账标识").is("入账");
  285. }
  286. } else {
  287. criteria.and("交易主体账号").is(dszfbyhid);
  288. }
  289. } else if (filename.equals("反诈治安-对手透视")) {
  290. if (lineId == null) {
  291. return criteria;
  292. }
  293. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  294. if (dataMap == null) {
  295. return null;
  296. }
  297. dszfbyhid = (String) dataMap.get("交易对手账号");
  298. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  299. if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
  300. if (clickHeader.equals("交易主体支出金额") || clickHeader.equals("交易主体支出笔数")) {
  301. criteria.and("交易对手账号").is(dszfbyhid).and("交易主体的出入账标识").is("出账");
  302. }
  303. } else {
  304. criteria.and("交易对手账号").is(dszfbyhid).and("交易主体的出入账标识").is("入账");
  305. }
  306. } else {
  307. criteria.and("交易对手账号").is(dszfbyhid);
  308. }
  309. } else if (filename.equals("财付通-账户透视")) {
  310. if (lineId == null) {
  311. return criteria;
  312. }
  313. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  314. if (dataMap == null) {
  315. return null;
  316. }
  317. dszfbyhid = (String) dataMap.get("交易主体账号");
  318. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  319. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  320. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  321. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("出");
  322. }
  323. } else {
  324. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("入");
  325. }
  326. } else {
  327. criteria.and("交易主体账号").is(dszfbyhid);
  328. }
  329. } else if (filename.equals("财付通-对手透视")) {
  330. if (lineId == null) {
  331. return criteria;
  332. }
  333. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  334. if (dataMap == null) {
  335. return null;
  336. }
  337. dszfbyhid = (String) dataMap.get("交易对手账号");
  338. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  339. if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
  340. if (clickHeader.equals("交易主体支出金额") || clickHeader.equals("交易主体支出笔数")) {
  341. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("出");
  342. }
  343. } else {
  344. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("入");
  345. }
  346. } else {
  347. criteria.and("交易对手账号").is(dszfbyhid);
  348. }
  349. } else if (filename.equals("数据分析-账户透视")) {
  350. if (lineId == null) {
  351. return criteria;
  352. }
  353. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  354. if (dataMap == null) {
  355. return null;
  356. }
  357. dszfbyhid = (String) dataMap.get("交易主体账号");
  358. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  359. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  360. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  361. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("借");
  362. }
  363. } else {
  364. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("贷");
  365. }
  366. } else {
  367. criteria.and("交易主体账号").is(dszfbyhid);
  368. }
  369. /* if (String.valueOf(dataMap.get("来源")).equals("财付通")) {
  370. dszfbyhid = (String) dataMap.get("交易主体账号");
  371. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  372. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  373. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  374. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("出");
  375. }
  376. } else {
  377. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("入");
  378. }
  379. } else {
  380. criteria.and("交易主体账号").is(dszfbyhid);
  381. }
  382. } else if (String.valueOf(dataMap.get("来源")).equals("五联单")) {
  383. dszfbyhid = (String) dataMap.get("交易主体账号");
  384. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  385. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  386. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  387. criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("支出");
  388. }
  389. } else {
  390. criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("收入");
  391. }
  392. } else {
  393. criteria.and("支付宝用户ID").is(dszfbyhid);
  394. }
  395. } else if (String.valueOf(dataMap.get("来源")).equals("反诈")) {
  396. dszfbyhid = (String) dataMap.get("交易主体账号");
  397. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  398. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  399. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  400. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("借");
  401. }
  402. } else {
  403. criteria.and("交易主体账号").is(dszfbyhid).and("借贷类型").is("贷");
  404. }
  405. } else {
  406. criteria.and("交易主体账号").is(dszfbyhid);
  407. }
  408. }*/
  409. } else if (filename.equals("数据分析-对手透视")) {
  410. if (lineId == null) {
  411. return criteria;
  412. }
  413. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  414. if (dataMap == null) {
  415. return null;
  416. }
  417. dszfbyhid = (String) dataMap.get("交易对手账号");
  418. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  419. if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
  420. if (clickHeader.equals("交易主体支出金额") || clickHeader.equals("交易主体支出笔数")) {
  421. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("借");
  422. }
  423. } else {
  424. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("贷");
  425. }
  426. } else {
  427. criteria.and("交易对手账号").is(dszfbyhid);
  428. }
  429. /* if (String.valueOf(dataMap.get("来源")).equals("财付通")) {
  430. dszfbyhid = (String) dataMap.get("交易对手账号");
  431. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  432. if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
  433. if (clickHeader.equals("交易主体支出金额") || clickHeader.equals("交易主体支出笔数")) {
  434. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("出");
  435. }
  436. } else {
  437. criteria.and("交易对手账号").is(dszfbyhid).and("借贷类型").is("入");
  438. }
  439. } else {
  440. criteria.and("交易对手账号").is(dszfbyhid);
  441. }
  442. }
  443. else if (String.valueOf(dataMap.get("来源")).equals("五联单")) {
  444. dszfbyhid = (String) dataMap.get("交易对手账号");
  445. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  446. if (!clickHeader.equals("主用户ID收入金额") && !clickHeader.equals("主用户ID收入笔数")) {
  447. if (clickHeader.equals("主用户ID支出金额") || clickHeader.equals("主用户ID支出笔数")) {
  448. criteria.and("对手支付宝用户ID").is(dszfbyhid).and("收/支").is("支出");
  449. }
  450. } else {
  451. criteria.and("对手支付宝用户ID").is(dszfbyhid).and("收/支").is("收入");
  452. }
  453. } else {
  454. criteria.and("对手支付宝用户ID").is(dszfbyhid);
  455. }
  456. }
  457. else if (String.valueOf(dataMap.get("来源")).equals("反诈")) {
  458. dszfbyhid = (String) dataMap.get("交易对手账号");
  459. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  460. if (!clickHeader.equals("交易主体收入金额") && !clickHeader.equals("交易主体收入笔数")) {
  461. if (clickHeader.equals("交易主体支出金额") || clickHeader.equals("交易主体支出笔数")) {
  462. criteria.and("交易对手账号").is(dszfbyhid).and("交易主体的出入账标识").is("出账");
  463. }
  464. } else {
  465. criteria.and("交易对手账号").is(dszfbyhid).and("交易主体的出入账标识").is("入账");
  466. }
  467. } else {
  468. criteria.and("交易对手账号").is(dszfbyhid);
  469. }
  470. }*/
  471. } else if (filename.equals("五联单-转账分析")) {
  472. if (lineId == null) {
  473. criteria.and("消费名称").is("转账");
  474. return criteria;
  475. }
  476. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  477. if (dataMap == null) {
  478. return null;
  479. }
  480. dszfbyhid = (String) dataMap.get("支付宝用户ID");
  481. if (!clickHeader.equals("转账总额") && !clickHeader.equals("总笔数")) {
  482. if (!clickHeader.equals("转账收入") && !clickHeader.equals("转收笔数")) {
  483. if (clickHeader.equals("转账支出") || clickHeader.equals("转支笔数")) {
  484. criteria.and("支付宝用户ID").is(dszfbyhid).and("消费名称").is("转账").and("收/支").is("支出");
  485. }
  486. } else {
  487. criteria.and("支付宝用户ID").is(dszfbyhid).and("消费名称").is("转账").and("收/支").is("收入");
  488. }
  489. } else {
  490. criteria.and("支付宝用户ID").is(dszfbyhid).and("消费名称").is("转账");
  491. }
  492. } else if (filename.equals("五联单-账户透视")) {
  493. if (lineId == null) {
  494. return criteria;
  495. }
  496. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  497. if (dataMap == null) {
  498. return null;
  499. }
  500. dszfbyhid = (String) dataMap.get("支付宝用户ID");
  501. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  502. if (!clickHeader.equals("收入金额") && !clickHeader.equals("收入笔数")) {
  503. if (clickHeader.equals("支出金额") || clickHeader.equals("支出笔数")) {
  504. criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("支出");
  505. }
  506. } else {
  507. criteria.and("支付宝用户ID").is(dszfbyhid).and("收/支").is("收入");
  508. }
  509. } else {
  510. criteria.and("支付宝用户ID").is(dszfbyhid);
  511. }
  512. } else if (filename.equals("五联单-对手透视")) {
  513. if (lineId == null) {
  514. return criteria;
  515. }
  516. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  517. if (dataMap == null) {
  518. return null;
  519. }
  520. dszfbyhid = (String) dataMap.get("对手支付宝用户ID");
  521. if (!clickHeader.equals("交易总额") && !clickHeader.equals("总笔数")) {
  522. if (!clickHeader.equals("主用户ID收入金额") && !clickHeader.equals("主用户ID收入笔数")) {
  523. if (clickHeader.equals("主用户ID支出金额") || clickHeader.equals("主用户ID支出笔数")) {
  524. criteria.and("对手支付宝用户ID").is(dszfbyhid).and("收/支").is("支出");
  525. }
  526. } else {
  527. criteria.and("对手支付宝用户ID").is(dszfbyhid).and("收/支").is("收入");
  528. }
  529. } else {
  530. criteria.and("对手支付宝用户ID").is(dszfbyhid);
  531. }
  532. } else if (filename.equals("五联单-收货地址分析")) {
  533. if (lineId == null) {
  534. return criteria;
  535. }
  536. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  537. if (dataMap == null) {
  538. return null;
  539. }
  540. dszfbyhid = (String) dataMap.get("收货人地址");
  541. if (clickHeader.equals("交易次数")) {
  542. criteria.and("收货人地址").is(dszfbyhid);
  543. }
  544. } else if (filename.equals("五联单-IP地址分析")) {
  545. if (lineId == null) {
  546. return criteria;
  547. }
  548. dataMap = this.mongoTemplate.findById(lineId, DataMap.class);
  549. if (dataMap == null) {
  550. return null;
  551. }
  552. dszfbyhid = (String) dataMap.get("IP地址");
  553. if (clickHeader.equals("登录次数")) {
  554. criteria.and("客户端IP").is(dszfbyhid);
  555. }
  556. }
  557. return criteria;
  558. }
  559. }