STKTask.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. package com.uas.eis.task;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.uas.eis.dto.stksto.QueryAccountantProjectDto;
  5. import com.uas.eis.dto.stksto.QueryCashFlowItemsDto;
  6. import com.uas.eis.dto.stksto.QueryTravellingMerchantDto;
  7. import com.uas.eis.dto.stksto.StkCommonDto;
  8. import com.uas.eis.sdk.dto.CustvendDTO;
  9. import com.uas.eis.service.RequestSTKService;
  10. import com.uas.eis.service.STKService;
  11. import com.uas.eis.vo.stkVo.AccountantProjectVo;
  12. import com.uas.eis.vo.stkVo.CashFlowItemsVo;
  13. import com.uas.eis.vo.stkVo.HttpResultResponse;
  14. import com.uas.eis.vo.stkVo.TravellingMerchantVo;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Value;
  18. import org.springframework.scheduling.annotation.Scheduled;
  19. import org.springframework.stereotype.Component;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import java.util.Calendar;
  22. import java.util.Date;
  23. import java.util.List;
  24. import java.util.Set;
  25. @Slf4j
  26. @Component
  27. public class STKTask {
  28. /**
  29. * 获取客商状态反馈信息
  30. * */
  31. @Value("${STK.get_travelling_merchant_status}")
  32. private String GET_TRAVELLING_MERCHANT_STATUS;
  33. @Autowired
  34. RequestSTKService requestSTKService;
  35. @Autowired
  36. private STKService stkService;
  37. /*@Scheduled(cron = "0 55 22 * * ?")
  38. public void getSellerOrders(){
  39. log.info("开始获取深投控客商状态信息=========start=============");
  40. Date date = new Date();
  41. QueryTravellingMerchantDto dto = new QueryTravellingMerchantDto();
  42. dto.setCode(GET_TRAVELLING_MERCHANT);
  43. dto.setPage(1);
  44. dto.setSize(500);
  45. TravellingMerchantVo travellingMerchantVo = new TravellingMerchantVo();
  46. Boolean exception = false;
  47. try{
  48. travellingMerchantVo = requestSTKService.selectTravellingMerchantList(dto,COMPLEXITY_QUERY_URL);
  49. }catch (Exception e){
  50. log.info("获取客商信息数据异常:{}",e.getMessage());
  51. exception = true;
  52. }
  53. log.info("定时任务获取深投控客商信息数据结果:{}", JSONObject.toJSONString(travellingMerchantVo));
  54. //第一次删除STK_CUSTVEND的数据
  55. stkService.getCustvend(travellingMerchantVo, true);
  56. if (travellingMerchantVo.getData().getHasNextPage()){
  57. Boolean isBreak = true;
  58. while(isBreak) {
  59. if(!exception){
  60. dto.setPage(travellingMerchantVo.getData().getNextPage());
  61. }
  62. log.info("while循环获取客商数据,查询参数:{}",JSONObject.toJSONString(dto));
  63. try{
  64. travellingMerchantVo = requestSTKService.selectTravellingMerchantList(dto, COMPLEXITY_QUERY_URL);
  65. }catch (Exception e){
  66. log.info("获取客商信息数据异常:{}",e.getMessage());
  67. exception = true;
  68. }
  69. stkService.getCustvend(travellingMerchantVo, false);
  70. if (!travellingMerchantVo.getData().getHasNextPage() || dto.getSize() > travellingMerchantVo.getData().getEndRow()){
  71. isBreak = false;
  72. }
  73. }
  74. }
  75. log.info("定时任务获取深投控客商信息数据结果2:{}", JSONObject.toJSONString(travellingMerchantVo));
  76. log.info("开始获取深投控客商状态信息,结束:"+((System.currentTimeMillis()-date.getTime())/1000));
  77. }*/
  78. //客商获取
  79. @Scheduled(cron = "0 39 18 * * ?")
  80. public void queryCustVendQuartz(){
  81. log.info("开始获取深投控客商状态信息=========start=============");
  82. Date date = new Date();
  83. QueryTravellingMerchantDto dto = new QueryTravellingMerchantDto();
  84. dto.setPage(118);
  85. dto.setSize(1000);
  86. //第一次删除STK_CUSTVEND的数据
  87. //stkService.delete();
  88. //是否跳出循环
  89. Boolean isBreak = true;
  90. //是否发生异常
  91. Boolean exception = false;
  92. //异常跳过次数
  93. Integer num = 0;
  94. while(isBreak) {
  95. if(num >=5){
  96. break;
  97. }
  98. log.info("while循环获取客商数据,查询参数:{}",JSONObject.toJSONString(dto));
  99. TravellingMerchantVo travellingMerchantVo = new TravellingMerchantVo();
  100. try{
  101. travellingMerchantVo = requestSTKService.queryTravelingMerchantList(dto);
  102. if(travellingMerchantVo.getCode() != 200){
  103. num = num +1;
  104. continue;
  105. }
  106. //获取到客商数据,数据入库
  107. stkService.getCustvend(travellingMerchantVo, false);
  108. exception = false;
  109. }catch (Exception e){
  110. log.info("获取客商信息数据异常:{}",e.getMessage());
  111. exception = true;
  112. num = num +1;
  113. }
  114. //判断没发生异常,且是最后一页条件判断==》没有下页编码,或者返回的数据量小于每次查询的每页数量
  115. if (!exception && null != travellingMerchantVo && null != travellingMerchantVo.getData() && dto.getSize() > travellingMerchantVo.getData().getEndRow()){
  116. isBreak = false;
  117. }
  118. if(!exception){
  119. dto.setPage(travellingMerchantVo.getData().getNextPage());
  120. }
  121. //log.info("定时任务获取深投控客商信息数据结果2:{}", JSONObject.toJSONString(travellingMerchantVo));
  122. }
  123. log.info("isBreak,结束:"+isBreak);
  124. log.info("num,结束:"+num);
  125. log.info("开始获取深投控客商状态信息,结束:"+((System.currentTimeMillis()-date.getTime())/1000));
  126. }
  127. //客商获取(当天)
  128. //@Scheduled(cron = "0 41 18 * * ?")
  129. public void queryCustVendDayQuartz(){
  130. log.info("开始获取深投控客商状态信息=========start=============");
  131. Date date = new Date();
  132. Calendar start=Calendar.getInstance();
  133. int month=start.get(Calendar.MONTH) + 1;
  134. log.info("开始时间:"+start.get(Calendar.YEAR)+"-"+month+"-"+start.get(Calendar.DAY_OF_MONTH)+" 00:00:00");
  135. log.info("结束时间:"+start.get(Calendar.YEAR)+"-"+month+"-"+start.get(Calendar.DAY_OF_MONTH)+" 23:59:59");
  136. QueryTravellingMerchantDto dto = new QueryTravellingMerchantDto();
  137. dto.setPage(1);
  138. dto.setSize(500);
  139. dto.setStart_time(start.get(Calendar.YEAR)+"-"+month+"-"+start.get(Calendar.DAY_OF_MONTH)+" 00:00:00");
  140. dto.setEnd_time(start.get(Calendar.YEAR)+"-"+month+"-"+start.get(Calendar.DAY_OF_MONTH)+" 23:59:59");
  141. //是否跳出循环
  142. Boolean isBreak = true;
  143. //是否发生异常
  144. Boolean exception = false;
  145. //异常跳过次数
  146. Integer num = 0;
  147. while(isBreak) {
  148. if(num >=5){
  149. break;
  150. }
  151. log.info("while循环获取客商数据,查询参数:{}",JSONObject.toJSONString(dto));
  152. TravellingMerchantVo travellingMerchantVo = new TravellingMerchantVo();
  153. try{
  154. travellingMerchantVo = requestSTKService.queryTravelingMerchantList(dto);
  155. if(travellingMerchantVo.getCode() != 200){
  156. num = num +1;
  157. continue;
  158. }
  159. //获取到客商数据,数据入库
  160. stkService.getCustvendDay(travellingMerchantVo, false);
  161. exception = false;
  162. }catch (Exception e){
  163. log.info("获取客商信息数据异常:{}",e.getMessage());
  164. exception = true;
  165. num = num +1;
  166. }
  167. //判断没发生异常,且是最后一页条件判断==》没有下页编码,或者返回的数据量小于每次查询的每页数量
  168. if (!exception && null != travellingMerchantVo && null != travellingMerchantVo.getData() && dto.getSize() > travellingMerchantVo.getData().getEndRow()){
  169. isBreak = false;
  170. }
  171. if(!exception){
  172. dto.setPage(travellingMerchantVo.getData().getNextPage());
  173. }
  174. log.info("定时任务获取深投控客商信息数据结果2:{}", JSONObject.toJSONString(travellingMerchantVo));
  175. }
  176. log.info("开始获取深投控客商状态信息,结束:"+((System.currentTimeMillis()-date.getTime())/1000));
  177. }
  178. //现金流项目
  179. //@Scheduled(cron = "0 35 23 * * ?")
  180. public void queryCashFlowItems(){
  181. //StkCommonDto dto = new StkCommonDto();
  182. QueryCashFlowItemsDto dtoParam = new QueryCashFlowItemsDto();
  183. /*dto.setPage(String.valueOf(pageXjl));
  184. dto.setSize("500");
  185. dto.setParam(dtoParam);*/
  186. Integer page = 1;
  187. Integer size = 1000;
  188. //是否跳出循环
  189. Boolean isBreak = true;
  190. //是否发生异常
  191. Boolean exception = false;
  192. //异常跳过次数
  193. Integer num = 0;
  194. while(isBreak) {
  195. if (num >= 5) {
  196. break;
  197. }
  198. CashFlowItemsVo cashFlowItemsVo = new CashFlowItemsVo();
  199. try {
  200. HttpResultResponse resultResponse = requestSTKService.buildPostParam(page,size,dtoParam);
  201. cashFlowItemsVo = JSONObject.parseObject(resultResponse.getBody(),CashFlowItemsVo.class);
  202. if (cashFlowItemsVo.getCode() != 200) {
  203. num = num + 1;
  204. continue;
  205. }
  206. //获取到现金流项目,数据入库
  207. stkService.getCashFlowItems(cashFlowItemsVo, true);
  208. exception = false;
  209. }catch (Exception e){
  210. log.info("获取现金流异常:{}",e.getMessage());
  211. exception = true;
  212. num = num +1;
  213. }
  214. //判断没发生异常,且是最后一页条件判断==》没有下页编码,或者当前页数等于返回页数
  215. if (!exception && null != cashFlowItemsVo && page >= cashFlowItemsVo.getPages()){
  216. isBreak = false;
  217. }
  218. if(!exception){
  219. page = page +1;
  220. }
  221. }
  222. }
  223. //获取会计科目
  224. //@Scheduled(cron = "0 05 01 * * ?")
  225. public void queryAccountantProject() {
  226. QueryAccountantProjectDto dto = new QueryAccountantProjectDto();
  227. Integer page = 1;
  228. Integer size = 1000;
  229. //是否跳出循环
  230. Boolean isBreak = true;
  231. //是否发生异常
  232. Boolean exception = false;
  233. //异常跳过次数
  234. Integer num = 0;
  235. while (isBreak) {
  236. if (num >= 5) {
  237. break;
  238. }
  239. log.info("while循环会计科目,查询参数:{}", JSONObject.toJSONString(dto));
  240. HttpResultResponse resultResponse = new HttpResultResponse();
  241. AccountantProjectVo accountantProjectVo = null;
  242. try {
  243. resultResponse = requestSTKService.buildKMPostParam(page, size ,dto);
  244. accountantProjectVo = JSONObject.parseObject(resultResponse.getBody(),AccountantProjectVo.class);
  245. if (accountantProjectVo.getCode() != 200) {
  246. num = num + 1;
  247. continue;
  248. }
  249. //获取到现金流项目,数据入库
  250. stkService.getAccountantProject(accountantProjectVo, true);
  251. exception = false;
  252. } catch (Exception e) {
  253. log.info("获取现金流异常:{}", e.getMessage());
  254. exception = true;
  255. num = num + 1;
  256. }
  257. //判断没发生异常,且是最后一页条件判断==》没有下页编码,或者当前页数等于返回页数
  258. if (!exception && null != accountantProjectVo && null != accountantProjectVo.getData() && page >= accountantProjectVo.getPages()) {
  259. isBreak = false;
  260. }
  261. if (!exception) {
  262. page = page + 1;
  263. }
  264. }
  265. }
  266. }