ZrzyJyzbBidwinNoticeSchedul.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package com.trs.ggzyexchange.schedul;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.trs.ggzyexchange.entity.*;
  6. import com.trs.ggzyexchange.enums.ClassIfy;
  7. import com.trs.ggzyexchange.enums.JobLock;
  8. import com.trs.ggzyexchange.service.*;
  9. import com.trs.ggzyexchange.utils.TenderDetailsVoUtils;
  10. import org.apache.commons.lang3.ObjectUtils;
  11. import org.quartz.Job;
  12. import org.quartz.JobExecutionContext;
  13. import org.quartz.JobExecutionException;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.text.SimpleDateFormat;
  19. import java.util.ArrayList;
  20. import java.util.Date;
  21. import java.util.List;
  22. /**
  23. * <p>
  24. * 成交结果公告 定时任务
  25. * </p>
  26. *
  27. * @author trs
  28. * @since 2023-02-24
  29. */
  30. @Component
  31. public class ZrzyJyzbBidwinNoticeSchedul implements Job {
  32. private Logger logger = LoggerFactory.getLogger(ZrzyJyzbBidwinNoticeSchedul.class);
  33. @Autowired
  34. private ZrzyJyzbBidwinNoticeService zrzyJyzbBidwinNoticeService;
  35. @Autowired
  36. private GcNoticeandfileService gcNoticeandfileService;
  37. @Autowired
  38. private TenderDetailsVoService tenderDetailsVoService;
  39. @Autowired
  40. private ScheduledTashService scheduledTashService;
  41. @Autowired
  42. private AreaPlatformService areaPlatformService;
  43. @Autowired
  44. private ZrzyJyzbNoticeService zrzyJyzbNoticeService;
  45. public void queryPageListUpdateEs() throws JsonProcessingException {
  46. /**
  47. * 查询当前在定时任务表当中的最新时间
  48. */
  49. QueryWrapper<ScheduledTash> scheduledTashQueryWrapper = new QueryWrapper<ScheduledTash>();
  50. scheduledTashQueryWrapper.eq("table_name_value","zrzy_jyzb_bidwin_notice");
  51. Page<ScheduledTash> pageScheduledTash = new Page<ScheduledTash>(1, 1);
  52. Page<ScheduledTash> page = scheduledTashService.page(pageScheduledTash, scheduledTashQueryWrapper);
  53. List<ScheduledTash> records = page.getRecords();
  54. ScheduledTash scheduledTash = null;
  55. if(records.size() > 0){
  56. scheduledTash = records.get(0);
  57. }
  58. Long time = null;
  59. if(ObjectUtils.isEmpty(scheduledTash)){
  60. try {
  61. /**
  62. * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间
  63. */
  64. time = zrzyJyzbBidwinNoticeService.maxDataTimeStamp();
  65. ScheduledTash scheduledTashTash = new ScheduledTash();
  66. scheduledTashTash.setTime(0L);
  67. time = 0L;
  68. scheduledTashTash.setTableNameValue("zrzy_jyzb_bidwin_notice");
  69. scheduledTashTash.setUpdateTime(new Date());
  70. scheduledTashTash.setCreateTime(new Date());
  71. scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
  72. }catch (Exception e){
  73. e.printStackTrace();
  74. }
  75. }else {
  76. /**
  77. * 如果scheduledTash为空,证明没有当前定时任务,设置当前的定时任务的时间为0 查询表gcNoticeandfile表当中的最新时间
  78. */
  79. time = scheduledTash.getTime();
  80. }
  81. try {
  82. //查询表gcNoticeandfile表当中的最新时间
  83. Long newTime = zrzyJyzbBidwinNoticeService.maxDataTimeStamp();
  84. ScheduledTash scheduledTashTash = new ScheduledTash();
  85. scheduledTashTash.setTime(newTime);
  86. scheduledTashTash.setTableNameValue("zrzy_jyzb_bidwin_notice");
  87. scheduledTashTash.setUpdateTime(new Date());
  88. scheduledTashService.saveOrUpdate(scheduledTashTash,scheduledTashQueryWrapper);
  89. }catch (Exception e){
  90. e.printStackTrace();
  91. }
  92. if(!ObjectUtils.isEmpty(time)){
  93. QueryWrapper<ZrzyJyzbBidwinNotice> gcPerformanceQueryWrapper = new QueryWrapper<ZrzyJyzbBidwinNotice>();
  94. gcPerformanceQueryWrapper.gt("DATA_TIMESTAMP",time);
  95. int count = zrzyJyzbBidwinNoticeService.count(gcPerformanceQueryWrapper);
  96. Integer pageSize = 1000;
  97. Integer pageNum = (int)Math.ceil((double)count/pageSize);
  98. for(int i = 1; i <= pageNum;i++){
  99. List<TenderDetailsVo> tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize,time);
  100. gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
  101. }
  102. }
  103. }
  104. public List<TenderDetailsVo> getTenderDetailsVoListAll(Integer pageNo,Integer pageSize,Long time){
  105. QueryWrapper<ZrzyJyzbBidwinNotice> gcPerformanceQueryWrapper = new QueryWrapper<ZrzyJyzbBidwinNotice>();
  106. gcPerformanceQueryWrapper.gt("ISSUE_TIME",time);
  107. Page<ZrzyJyzbBidwinNotice> page = new Page<ZrzyJyzbBidwinNotice>(pageNo, pageSize);
  108. Page<ZrzyJyzbBidwinNotice> page1 = zrzyJyzbBidwinNoticeService.page(page,gcPerformanceQueryWrapper);
  109. List<ZrzyJyzbBidwinNotice> records = page1.getRecords();
  110. List<TenderDetailsVo> tenderDetailsVos = new ArrayList<TenderDetailsVo>();
  111. for (ZrzyJyzbBidwinNotice record : records) {
  112. TenderDetailsVo tenderDetailsVo = new TenderDetailsVo();
  113. String projectCode = record.getProjectCode();
  114. if(!ObjectUtils.isEmpty(projectCode)){
  115. tenderDetailsVo.setProjectCode(projectCode);
  116. }
  117. String noticeName = record.getNoticeNane();
  118. if(!ObjectUtils.isEmpty(noticeName)){
  119. tenderDetailsVo.setNoticeName(noticeName);
  120. }
  121. String projectName = record.getProjectName();
  122. if(!ObjectUtils.isEmpty(projectName)){
  123. tenderDetailsVo.setProjectName(projectName);
  124. }
  125. String unifiedDealCode = record.getUnifiedDealCode();
  126. if(!ObjectUtils.isEmpty(projectCode)){
  127. tenderDetailsVo.setTenderProjectCode(projectCode);
  128. }
  129. String noticeContent = record.getNoticeContent();
  130. if(!ObjectUtils.isEmpty(noticeContent)){
  131. tenderDetailsVo.setNoticeContent(noticeContent);
  132. }
  133. Long getIssueTime = record.getIssueTime();
  134. Long createDate = record.getCreateDate();
  135. if(!ObjectUtils.isEmpty(createDate)){
  136. tenderDetailsVo.setNoticeSendTime(record.getCreateDate().toString());
  137. }else{
  138. if(!ObjectUtils.isEmpty(getIssueTime)){
  139. tenderDetailsVo.setNoticeSendTime(getIssueTime.toString());
  140. tenderDetailsVo.setDocGetStartTime(getIssueTime.toString());
  141. }
  142. }
  143. String projectCode1 = record.getProjectCode();
  144. if (!ObjectUtils.isEmpty(projectCode1)) {
  145. String regionCode = getRegionCode(projectCode1);
  146. if(!ObjectUtils.isEmpty(regionCode)){
  147. tenderDetailsVo.setRegionCode(regionCode);
  148. }
  149. }
  150. Long dealTime = record.getDataTimestamp();
  151. if(!ObjectUtils.isEmpty(dealTime)){
  152. tenderDetailsVo.setDocGetEndTime(dealTime.toString());
  153. }
  154. String sourceDataKey = record.getSourceDataKey();
  155. if(!ObjectUtils.isEmpty(sourceDataKey)){
  156. tenderDetailsVo.setSourceDataKey(sourceDataKey+getIssueTime);
  157. }
  158. String dataSourceCode = record.getSourceDataCode();
  159. if(!ObjectUtils.isEmpty(dataSourceCode)){
  160. tenderDetailsVo.setDataSourceCode(dataSourceCode);
  161. }
  162. tenderDetailsVos.add(tenderDetailsVo);
  163. }
  164. for (TenderDetailsVo record : tenderDetailsVos) {
  165. try {
  166. record.setNoticeTypeCode(ClassIfy.TRANSACTION_PARCEL.getCode());
  167. record.setNoticeTypeName(ClassIfy.TRANSACTION_PARCEL.getName());
  168. record.setTransactionTypeCode(ClassIfy.NATURAL_RESOURCES.getCode());
  169. record.setTransactionTypeName(ClassIfy.NATURAL_RESOURCES.getName());
  170. record = tenderDetailsVoService.getTenderDetailsVoAllOrther(record);
  171. try {
  172. String regionCode = record.getRegionCode();
  173. AreaPlatform areaPlatformByRegionCode = areaPlatformService.getAreaPlatformByRegionCode(regionCode);
  174. if(!ObjectUtils.isEmpty(areaPlatformByRegionCode)){
  175. record.setPlatformCode(areaPlatformByRegionCode.getPlatformCode());
  176. record.setPlatformName(areaPlatformByRegionCode.getRegionName());
  177. }
  178. record.setIndustriesTypeName(ClassIfy.zrzy_jy.getName());
  179. }catch (Exception e){
  180. e.printStackTrace();
  181. }
  182. TenderDetailsVoUtils.isNull(record);
  183. }catch (Exception e){
  184. e.printStackTrace();
  185. }
  186. }
  187. return tenderDetailsVos;
  188. }
  189. @Override
  190. public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
  191. try {
  192. if(JobLock.zrzyJyzbBidwinNoticeFlag){
  193. JobLock.zrzyJyzbBidwinNoticeFlag = false;
  194. logger.info("执行ZrzyCkqBidwinnotice", new SimpleDateFormat().format(new Date()));
  195. try {
  196. queryPageListUpdateEs();
  197. } catch (Exception e) {
  198. e.printStackTrace();
  199. }
  200. JobLock.zrzyJyzbBidwinNoticeFlag = true;
  201. }else{
  202. logger.info("不执行zrzyJyzbBidwinNotice", new SimpleDateFormat().format(new Date()));
  203. }
  204. }catch (Exception e){
  205. e.printStackTrace();
  206. JobLock.zrzyJyzbBidwinNoticeFlag = true;
  207. }
  208. }
  209. public void execute() throws JobExecutionException {
  210. try {
  211. if(JobLock.zrzyJyzbBidwinNoticeFlag){
  212. JobLock.zrzyJyzbBidwinNoticeFlag = false;
  213. logger.info("执行zrzyJyzbBidwinNotice", new SimpleDateFormat().format(new Date()));
  214. try {
  215. queryPageListUpdateEs();
  216. } catch (Exception e) {
  217. e.printStackTrace();
  218. }
  219. JobLock.zrzyJyzbBidwinNoticeFlag = true;
  220. }else{
  221. logger.info("不执行zrzyJyzbBidwinNotice", new SimpleDateFormat().format(new Date()));
  222. }
  223. }catch (Exception e){
  224. e.printStackTrace();
  225. JobLock.zrzyJyzbBidwinNoticeFlag = true;
  226. }
  227. }
  228. public String getRegionCode(String projectCode){
  229. String zone = null;
  230. if(!ObjectUtils.isEmpty(projectCode)){
  231. QueryWrapper<ZrzyJyzbNotice> zrzyJyzbNoticeQueryWrapper = new QueryWrapper<ZrzyJyzbNotice>();
  232. zrzyJyzbNoticeQueryWrapper.gt("PROJECT_CODE",projectCode);
  233. Page<ZrzyJyzbNotice> page = new Page<ZrzyJyzbNotice>(1, 1);
  234. Page<ZrzyJyzbNotice> page1 = zrzyJyzbNoticeService.page(page,zrzyJyzbNoticeQueryWrapper);
  235. List<ZrzyJyzbNotice> records = page1.getRecords();
  236. if(!ObjectUtils.isEmpty(records)){
  237. if(records.size() >= 1){
  238. ZrzyJyzbNotice zrzyJyzbNotice = records.get(0);
  239. zone = zrzyJyzbNotice.getZone();
  240. }
  241. }
  242. }
  243. return zone;
  244. }
  245. }