AntiSecurityTrade3.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. package ieven.server.webapp.service.alipay;
  2. import com.mongodb.client.MongoCursor;
  3. import ieven.server.webapp.domain.alipay.HeaderProperties;
  4. import ieven.server.webapp.domain.data.DataMap;
  5. import ieven.server.webapp.domain.file.FileService;
  6. import ieven.server.webapp.service.Ops;
  7. import ieven.server.webapp.util.DataUtils;
  8. import ieven.server.webapp.util.excel.PublicStatic;
  9. import org.apache.commons.collections4.CollectionUtils;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.bson.Document;
  12. import org.springframework.data.mongodb.core.MongoTemplate;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.concurrent.CountDownLatch;
  18. public class AntiSecurityTrade3 extends Ops implements Runnable {
  19. HeaderProperties headerProperties;
  20. MongoTemplate mongoTemplate;
  21. String modelId;
  22. Map<String, String> accountToName;
  23. FileService fileService;
  24. CountDownLatch latch;
  25. public AntiSecurityTrade3(
  26. HeaderProperties headerProperties,
  27. String modelId,
  28. MongoTemplate mongoTemplate,
  29. Map<String, String> accountToName,
  30. FileService fileService,
  31. CountDownLatch latch3) {
  32. this.headerProperties = headerProperties;
  33. this.accountToName = accountToName;
  34. this.modelId = modelId;
  35. this.mongoTemplate = mongoTemplate;
  36. this.fileService = fileService;
  37. latch = latch3;
  38. }
  39. @Override
  40. public void run() {
  41. String antiSecurityFileId = "";
  42. String dateFileId1 = getFileId("反诈数据-订单明细", modelId, mongoTemplate);
  43. String dateFileId2 = getFileId("治安数据-订单明细", modelId, mongoTemplate);
  44. String dateFileId3 = getFileId("经侦数据-订单明细", modelId, mongoTemplate);
  45. // 遍历登录日志全表
  46. if (StringUtils.isNotBlank(dateFileId1) || StringUtils.isNotBlank(dateFileId2) || StringUtils.isNotBlank(dateFileId3)) {
  47. MongoCursor<Document> cursor1 = getCursor(dateFileId1, mongoTemplate);
  48. if (cursor1.hasNext()) {
  49. antiSecurityFileId = antiSecurityFileId();
  50. insertData1(cursor1, antiSecurityFileId);
  51. }
  52. MongoCursor<Document> cursor2 = getCursor(dateFileId2, mongoTemplate);
  53. if (cursor2.hasNext()) {
  54. if (StringUtils.isBlank(antiSecurityFileId)) {
  55. antiSecurityFileId = antiSecurityFileId();
  56. }
  57. insertData2(cursor2, antiSecurityFileId);
  58. }
  59. MongoCursor<Document> cursor3 = getCursor(dateFileId3, mongoTemplate);
  60. if (cursor3.hasNext()) {
  61. if (StringUtils.isBlank(antiSecurityFileId)) {
  62. antiSecurityFileId = antiSecurityFileId();
  63. }
  64. insertData3(cursor3, antiSecurityFileId);
  65. }
  66. }
  67. latch.countDown();
  68. }
  69. public String antiSecurityFileId() {
  70. return createLogicAndDeleteOld(
  71. "反诈治安-交易明细",
  72. modelId,
  73. headerProperties.getAntiSecurityTradeOutput(),
  74. mongoTemplate,
  75. fileService
  76. );
  77. }
  78. public void insertData1(MongoCursor<Document> cursor, String antiSecurityFileId) {
  79. Document origin;
  80. List<DataMap> needToSave = new ArrayList<>(1000);
  81. Map<String, Object> dataMapUser = new HashMap<>();
  82. while (cursor.hasNext()) {
  83. origin = cursor.next();
  84. DataMap dataMap = new DataMap();
  85. dataMap.put("fileId", antiSecurityFileId);
  86. dataMap.put("支付订单号", origin.getString("支付订单号"));
  87. dataMap.put("交易流水号", origin.getString("交易流水号"));
  88. String flag = origin.getString("交易主体的出入账标识");
  89. dataMap.put("交易主体的出入账标识", flag);
  90. dataMap.put("交易类型", origin.getString("交易类型"));
  91. dataMap.put("支付类型", origin.getString("支付类型"));
  92. dataMap.put("币种", origin.getString("币种"));
  93. String string = origin.getString("交易金额");
  94. if (StringUtils.isBlank(string)) {
  95. continue;
  96. }
  97. dataMap.put("交易金额", origin.getString("交易金额"));
  98. dataMap.put("交易余额", origin.getString("交易余额"));
  99. dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
  100. dataMap.put("交易设备类型", origin.getString("交易设备类型"));
  101. dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
  102. dataMap.put("MAC地址", origin.getString("MAC地址"));
  103. dataMap.put("交易地点经度", origin.getString("交易地点经度"));
  104. dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
  105. dataMap.put("备注", origin.getString("备注"));
  106. if ("出账".equals(flag)) {
  107. dataMap.put("交易主体账号", origin.getString("付款方的支付账号"));
  108. dataMap.put("交易主体银行卡号", origin.getString("付款方银行卡所属银行卡号"));
  109. dataMap.put("交易主体银行名称", origin.getString("付款方银行卡所属银行名称"));
  110. dataMap.put("交易主体户名", "");
  111. dataMap.put("交易对手账号", origin.getString("收款方的支付账号"));
  112. dataMap.put("交易对手银行卡号", origin.getString("收款方银行卡所属银行卡号"));
  113. dataMap.put("交易对手银行名称", origin.getString("收款方银行卡所属银行名称"));
  114. dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
  115. String jyztzh = String.valueOf(origin.getString("收款方的支付账号"));
  116. String jyztzhhm = String.valueOf(origin.getString("收款方的商户名称"));
  117. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  118. dataMapUser.put(jyztzh, jyztzhhm);
  119. }
  120. } else if ("入账".equals(flag)) {
  121. dataMap.put("交易主体账号", origin.getString("收款方的支付账号"));
  122. dataMap.put("交易主体银行卡号", origin.getString("收款方银行卡所属银行卡号"));
  123. dataMap.put("交易主体银行名称", origin.getString("收款方银行卡所属银行名称"));
  124. dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
  125. dataMap.put("交易对手账号", origin.getString("付款方的支付账号"));
  126. dataMap.put("交易对手银行卡号", origin.getString("付款方银行卡所属银行卡号"));
  127. dataMap.put("交易对手银行名称", origin.getString("付款方银行卡所属银行名称"));
  128. dataMap.put("交易对手户名", "");
  129. String jyztzh = String.valueOf(origin.getString("收款方的支付账号"));
  130. String jyztzhhm = String.valueOf(origin.getString("收款方的商户名称"));
  131. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  132. dataMapUser.put(jyztzh, jyztzhhm);
  133. }
  134. }
  135. dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
  136. String jyzthm = String.valueOf(dataMap.get("交易主体户名"));
  137. if (StringUtils.isBlank(jyzthm) || "-".equals(jyzthm) || "null".equals(jyzthm)) {
  138. String account = (String) dataMap.getOrDefault("交易主体账号", "");
  139. if (StringUtils.isBlank(account) || "-".equals(account)) {
  140. } else {
  141. String newName = accountToName.getOrDefault(account, "");
  142. if (StringUtils.isNotBlank(newName)) {
  143. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(newName));
  144. } else {
  145. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  146. }
  147. }
  148. } else {
  149. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
  150. }
  151. String value = String.valueOf(dataMap.get("交易对手户名"));
  152. if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
  153. String account = (String) dataMap.getOrDefault("交易对手账号", "");
  154. if (StringUtils.isBlank(account) || "-".equals(account)) {
  155. } else {
  156. String newName = accountToName.getOrDefault(account, "");
  157. if (StringUtils.isNotBlank(newName)) {
  158. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(newName));
  159. } else {
  160. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  161. }
  162. }
  163. } else {
  164. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
  165. }
  166. needToSave.add(dataMap);
  167. if (needToSave.size() >= 1000) {
  168. saveLines(new ArrayList<>(needToSave), mongoTemplate);
  169. needToSave.clear();
  170. }
  171. }
  172. if (CollectionUtils.isNotEmpty(needToSave)) {
  173. saveLines(needToSave, mongoTemplate);
  174. }
  175. }
  176. public void insertData2(MongoCursor<Document> cursor, String antiSecurityFileId) {
  177. Document origin;
  178. List<DataMap> needToSave = new ArrayList<>(1000);
  179. Map<String, Object> dataMapUser = new HashMap<>();
  180. while (cursor.hasNext()) {
  181. origin = cursor.next();
  182. DataMap dataMap = new DataMap();
  183. dataMap.put("fileId", antiSecurityFileId);
  184. dataMap.put("支付订单号", origin.getString("支付订单号"));
  185. dataMap.put("交易流水号", origin.getString("交易流水号"));
  186. String flag = origin.getString("交易主体的出入账标识");
  187. dataMap.put("交易主体的出入账标识", flag);
  188. dataMap.put("交易类型", origin.getString("交易类型"));
  189. dataMap.put("支付类型", origin.getString("支付类型"));
  190. dataMap.put("币种", origin.getString("币种"));
  191. dataMap.put("交易金额", origin.getString("交易金额"));
  192. dataMap.put("交易余额", origin.getString("交易余额"));
  193. dataMap.put("消费POS机编号", origin.getString("消费POS机编号"));
  194. dataMap.put("交易设备类型", origin.getString("交易设备类型"));
  195. dataMap.put("交易支付设备IP", origin.getString("交易支付设备IP"));
  196. dataMap.put("MAC地址", origin.getString("MAC地址"));
  197. dataMap.put("交易地点经度", origin.getString("交易地点经度"));
  198. dataMap.put("交易地点纬度", origin.getString("交易地点纬度"));
  199. dataMap.put("备注", origin.getString("备注"));
  200. if ("出账".equals(flag)) {
  201. dataMap.put("交易主体账号", origin.getString("付款支付账号"));
  202. dataMap.put("交易主体银行卡号", origin.getString("付款银行卡号"));
  203. dataMap.put("交易主体银行名称", origin.getString("付款银行卡银行名称"));
  204. dataMap.put("交易主体户名", "");
  205. dataMap.put("交易对手账号", origin.getString("收款支付账号"));
  206. dataMap.put("交易对手银行卡号", origin.getString("收款银行卡号"));
  207. dataMap.put("交易对手银行名称", origin.getString("收款银行卡银行名称"));
  208. dataMap.put("交易对手户名", origin.getString("收款方的商户名称"));
  209. String jyztzh = String.valueOf(origin.getString("收款支付账号"));
  210. String jyztzhhm = String.valueOf(origin.getString("收款方的商户名称"));
  211. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  212. dataMapUser.put(jyztzh, jyztzhhm);
  213. }
  214. } else if ("入账".equals(flag)) {
  215. dataMap.put("交易主体账号", origin.getString("收款支付账号"));
  216. dataMap.put("交易主体银行卡号", origin.getString("收款银行卡号"));
  217. dataMap.put("交易主体银行名称", origin.getString("收款银行卡银行名称"));
  218. dataMap.put("交易主体户名", origin.getString("收款方的商户名称"));
  219. dataMap.put("交易对手账号", origin.getString("付款支付账号"));
  220. dataMap.put("交易对手银行卡号", origin.getString("付款银行卡号"));
  221. dataMap.put("交易对手银行名称", origin.getString("付款银行卡银行名称"));
  222. dataMap.put("交易对手户名", "");
  223. String jyztzh = String.valueOf(origin.getString("收款支付账号"));
  224. String jyztzhhm = String.valueOf(origin.getString("收款方的商户名称"));
  225. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  226. dataMapUser.put(jyztzh, jyztzhhm);
  227. }
  228. }
  229. dataMap.put("交易时间", DataUtils.transferDateToStr(origin.getString("交易时间")));
  230. String jyzthm = String.valueOf(dataMap.get("交易主体户名"));
  231. if (StringUtils.isBlank(jyzthm) || "-".equals(jyzthm) || "null".equals(jyzthm)) {
  232. String account = (String) dataMap.getOrDefault("交易主体账号", "");
  233. if (StringUtils.isBlank(account) || "-".equals(account)) {
  234. } else {
  235. String newName = accountToName.getOrDefault(account, "");
  236. if (StringUtils.isNotBlank(newName)) {
  237. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(newName));
  238. } else {
  239. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  240. }
  241. }
  242. } else {
  243. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
  244. }
  245. String value = String.valueOf(dataMap.get("交易对手户名"));
  246. if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
  247. String account = (String) dataMap.getOrDefault("交易对手账号", "");
  248. if (StringUtils.isBlank(account) || "-".equals(account)) {
  249. } else {
  250. String newName = accountToName.getOrDefault(account, "");
  251. if (StringUtils.isNotBlank(newName)) {
  252. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(newName));
  253. } else {
  254. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  255. }
  256. }
  257. } else {
  258. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
  259. }
  260. needToSave.add(dataMap);
  261. if (needToSave.size() >= 1000) {
  262. saveLines(new ArrayList<>(needToSave), mongoTemplate);
  263. needToSave.clear();
  264. }
  265. }
  266. if (CollectionUtils.isNotEmpty(needToSave)) {
  267. saveLines(needToSave, mongoTemplate);
  268. }
  269. }
  270. public void insertData3(MongoCursor<Document> cursor, String antiSecurityFileId) {
  271. Document originDoc;
  272. List<DataMap> needToSave = new ArrayList<>(1000);
  273. Map<String, Object> dataMapUser = new HashMap<>();
  274. while (cursor.hasNext()) {
  275. originDoc = cursor.next();
  276. DataMap dataMap = new DataMap();
  277. dataMap.put("fileId", antiSecurityFileId);
  278. dataMap.put("交易主体账号", originDoc.getString("查询账号"));
  279. dataMap.put("支付订单号", originDoc.getString("支付机构内部订单号"));
  280. String f1 = originDoc.getString("借贷标志");
  281. dataMap.put("交易金额", originDoc.getString("交易金额"));
  282. dataMap.put("交易余额", originDoc.getString("交易余额"));
  283. dataMap.put("交易类型", originDoc.getString("交易类型"));
  284. dataMap.put("交易时间", originDoc.getString("交易时间"));
  285. dataMap.put("银行类型", originDoc.getString("支付类型"));
  286. dataMap.put("交易流水号", originDoc.getString("银行外部渠道交易流水号"));
  287. dataMap.put("备注", originDoc.getString("备注"));
  288. dataMap.put("币种", originDoc.getString("币种"));
  289. if (f1.equals("贷")) {
  290. dataMap.put("交易对手账号", originDoc.getString("付款方支付帐号"));
  291. dataMap.put("交易对手银行名称", originDoc.getString("付款方银行卡所属行"));
  292. dataMap.put("交易对手银行卡号", originDoc.getString("付款方银行卡号"));
  293. dataMap.put("交易主体银行名称", originDoc.getString("收款方银行卡所属行"));
  294. dataMap.put("交易主体银行卡号", originDoc.getString("收款方银行卡号"));
  295. dataMap.put("交易主体户名", originDoc.getString("收款方的商户名称"));
  296. dataMap.put("交易主体的出入账标识", "入账");
  297. String jyztzh = String.valueOf(originDoc.getString("查询账号"));
  298. String jyztzhhm = String.valueOf(originDoc.getString("收款方的商户名称"));
  299. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  300. dataMapUser.put(jyztzh, jyztzhhm);
  301. }
  302. }
  303. if (f1.equals("借")) {
  304. dataMap.put("交易主体银行名称", originDoc.getString("付款方银行卡所属行"));
  305. dataMap.put("交易主体银行卡号", originDoc.getString("付款方银行卡号"));
  306. dataMap.put("交易对手账号", originDoc.getString("收款方支付帐号"));
  307. dataMap.put("交易对手银行名称", originDoc.getString("收款方银行卡所属行"));
  308. dataMap.put("交易对手银行卡号", originDoc.getString("收款方银行卡号"));
  309. dataMap.put("交易对手户名", originDoc.getString("收款方的商户名称"));
  310. dataMap.put("交易主体的出入账标识", "出账");
  311. String jyztzh = String.valueOf(originDoc.getString("收款方支付帐号"));
  312. String jyztzhhm = String.valueOf(originDoc.getString("收款方的商户名称"));
  313. if (StringUtils.isNotBlank(jyztzh) && !"null".equals(jyztzh) && StringUtils.isNotBlank(jyztzhhm) && !"null".equals(jyztzhhm)) {
  314. dataMapUser.put(jyztzh, jyztzhhm);
  315. }
  316. }
  317. String jyzthm = String.valueOf(dataMap.get("交易主体户名"));
  318. if (StringUtils.isBlank(jyzthm) || "-".equals(jyzthm) || "null".equals(jyzthm)) {
  319. String account = (String) dataMap.getOrDefault("交易主体账号", "");
  320. if (StringUtils.isBlank(account) || "-".equals(account)) {
  321. } else {
  322. String newName = accountToName.getOrDefault(account, "");
  323. if (StringUtils.isNotBlank(newName)) {
  324. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(newName));
  325. } else {
  326. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  327. }
  328. }
  329. } else {
  330. dataMap.put("交易主体户名", PublicStatic.specialFormatStr(jyzthm));
  331. }
  332. String value = String.valueOf(dataMap.get("交易对手户名"));
  333. if (StringUtils.isBlank(value) || "-".equals(value) || "null".equals(value)) {
  334. String account = (String) dataMap.getOrDefault("交易对手账号", "");
  335. if (StringUtils.isBlank(account) || "-".equals(account)) {
  336. } else {
  337. String newName = accountToName.getOrDefault(account, "");
  338. if (StringUtils.isNotBlank(newName)) {
  339. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(newName));
  340. } else {
  341. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(String.valueOf(dataMapUser.get(account))));
  342. }
  343. }
  344. } else {
  345. dataMap.put("交易对手户名", PublicStatic.specialFormatStr(value));
  346. }
  347. needToSave.add(dataMap);
  348. if (needToSave.size() >= 1000) {
  349. saveLines(new ArrayList<>(needToSave), mongoTemplate);
  350. needToSave.clear();
  351. }
  352. }
  353. if (CollectionUtils.isNotEmpty(needToSave)) {
  354. saveLines(needToSave, mongoTemplate);
  355. }
  356. }
  357. }