TmsTruckQualityService.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.steerinfo.dil.mapper.TmstruckQualityResultMapper;
  5. import com.steerinfo.dil.mapper.TmstruckWeightResultMapper;
  6. import com.steerinfo.dil.model.TmstruckQualityResult;
  7. import com.steerinfo.dil.service.ITmsTruckQualityResultService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import org.apache.http.HttpEntity;
  10. import org.apache.http.HttpResponse;
  11. import org.apache.http.HttpStatus;
  12. import org.apache.http.client.methods.HttpGet;
  13. import org.apache.http.impl.client.CloseableHttpClient;
  14. import org.apache.http.impl.client.HttpClientBuilder;
  15. import org.apache.http.util.EntityUtils;
  16. import org.dom4j.DocumentException;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.scheduling.annotation.Scheduled;
  19. import org.springframework.stereotype.Service;
  20. import com.steerinfo.dil.util.XmlToJsonUtil;
  21. import java.io.IOException;
  22. import java.math.BigDecimal;
  23. import java.util.Date;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * @author luobang
  28. * @create 2021-10-27 14:28
  29. */
  30. @Service
  31. public class TmsTruckQualityService implements ITmsTruckQualityResultService {
  32. @Autowired
  33. TmstruckQualityResultMapper tmstruckQualityResultMapper;
  34. @Autowired
  35. TmstruckWeightResultMapper tmstruckWeightResultMapper;
  36. //定时访问质检系统,获取质检实绩
  37. @Scheduled(cron = "30 10 10 * * ?")
  38. public int insertQualityResult() throws IOException, DocumentException {
  39. //先查出所有需要质检的但是没有质检的磅单号
  40. List<Map<String,Object>> mapList = tmstruckWeightResultMapper.selectWzInputId();
  41. if (mapList.size() != 0){
  42. for (Map<String,Object> map:mapList
  43. ) {
  44. BigDecimal resultTotalId= (BigDecimal) map.get("resultTotalId");
  45. String capacityNumber = (String) map.get("capacityNumber");
  46. if(capacityNumber==null || resultTotalId==null){
  47. continue;
  48. }
  49. String grossWeightTime = (String) map.get("grossWeightTime");
  50. String WzInputId = grossWeightTime + capacityNumber.substring(2);
  51. // 1. 创建 HttpClient 的实例
  52. CloseableHttpClient httpClient = HttpClientBuilder.create().build();
  53. // 2. 创建某种连接方法的实例
  54. HttpGet httpGet = new HttpGet("http://172.16.33.106:40003/DG_Interface.asmx/Get_Quality_Info?WzInputId="+WzInputId);
  55. // 3. 调用第一步中创建好的实例的execute方法来执行第二步中创建好的链接类实例
  56. HttpResponse httpResponse = httpClient.execute(httpGet);
  57. // 4. 读response获取HttpEntity
  58. if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  59. HttpEntity entity = httpResponse.getEntity();
  60. //System.out.println(entity);
  61. // 5. 对得到后的内容进行处理
  62. String result = EntityUtils.toString(entity, "utf-8");
  63. //System.out.println(result);
  64. try {
  65. JSONObject object = XmlToJsonUtil.xmlToJson(result);
  66. Map<String, Object>map1 = (Map<String, Object>) object.get("JsonResult");
  67. List mapList2= JSON.parseArray((String) map1.get("jsonResult"));
  68. if(mapList2 == null || mapList2.size() == 0){
  69. continue;
  70. }
  71. List<Map<String,Object>> mapList9= mapList2;
  72. if(mapList9.get(0) != null){
  73. //判断是否生成报告单,如果生成则生成质检实绩,否则退出
  74. Map<String,Object> map3 = mapList9.get(0);
  75. Object value = map3.get("REPORT_ID");
  76. if("".equals(value)){
  77. continue;
  78. }
  79. //质检说明
  80. String DeductionDescription=(String)map3.get("DEDUCT_SEASON");
  81. //获取卸货点
  82. String samplePlaceName=(String) map3.get("SAMPLE_PLACE_NAME");
  83. //查询卸货点ID
  84. BigDecimal SamplePlaceId=tmstruckQualityResultMapper.selectSamplePlaceId(samplePlaceName);
  85. //扣水扣杂量
  86. BigDecimal Deduction= DataChange.dataToBigDecimal(map3.get("DEDUCT_NUMBER"));
  87. //抽样时间
  88. Date sampleDate= new Date((String)(map3.get("SAMPLE_DATE")));
  89. //获取检验结果
  90. String element_value =(String) map3.get("ELEMENT_VALUE");
  91. //根据磅单号新增相应的质检实绩
  92. TmstruckQualityResult tmstruckQualityResult = new TmstruckQualityResult();
  93. //主键ID
  94. tmstruckQualityResult.setId(tmstruckQualityResultMapper.qualityId());
  95. tmstruckQualityResult.setInsertTime(new Date());
  96. tmstruckQualityResult.setInsertUsername("质检系统-物流系统");
  97. tmstruckQualityResult.setInsertUpdateRemark("原料质检实绩");
  98. //总实绩ID
  99. tmstruckQualityResult.setTotalResultId(resultTotalId);
  100. //卸货点
  101. tmstruckQualityResult.setResultSamplingPointId(SamplePlaceId);
  102. //输入抽样时间
  103. tmstruckQualityResult.setResultSamplingTime(sampleDate);
  104. //输入扣水扣杂量
  105. tmstruckQualityResult.setResultDeduction(Deduction);
  106. tmstruckQualityResult.setResultDeductionDescription(DeductionDescription);
  107. tmstruckQualityResult.setResultIssampling("已抽样");
  108. //水分吨位
  109. tmstruckQualityResult.setElementValue(element_value);
  110. tmstruckQualityResultMapper.insertSelective(tmstruckQualityResult);
  111. //更新计重实绩表中的是否质检完成字段
  112. //tmstruckWeightResultMapper.updateWzInputId(resultTotalId);
  113. }
  114. } catch (DocumentException e) {
  115. e.printStackTrace();
  116. }
  117. EntityUtils.consume(entity);
  118. } else {
  119. System.err.println(httpResponse.getStatusLine());
  120. }
  121. // 6. 释放连接。无论执行方法是否成功,都必须释放连接
  122. httpClient.close();
  123. }
  124. }
  125. return 1;
  126. }
  127. //@Override
  128. //public int deleteQualityResult() {
  129. // //查询有重复的质检实绩
  130. // List<Map<String,Object>> mapList = tmstruckQualityResultMapper.selectRepeatResult();
  131. // for(Map<String,Object> map : mapList) {
  132. // tmstruckQualityResultMapper.deleteQualityResult()
  133. // }
  134. //}
  135. }