package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.steerinfo.dil.mapper.TmstruckQualityResultMapper; import com.steerinfo.dil.mapper.TmstruckWeightResultMapper; import com.steerinfo.dil.model.TmstruckQualityResult; import com.steerinfo.dil.service.ITmsTruckQualityResultService; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.dom4j.DocumentException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import com.steerinfo.dil.util.XmlToJsonUtil; import java.io.IOException; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; /** * @author luobang * @create 2021-10-27 14:28 */ @Service public class TmsTruckQualityService implements ITmsTruckQualityResultService { @Autowired TmstruckQualityResultMapper tmstruckQualityResultMapper; @Autowired TmstruckWeightResultMapper tmstruckWeightResultMapper; //定时访问质检系统,获取质检实绩 @Scheduled(cron = "* 1 * * * ?") @Override public int insertQualityResult() throws IOException, DocumentException { //先查出所有没有质检实绩的磅单号 List>mapList=tmstruckWeightResultMapper.selectWzInputId(); System.out.println(mapList); System.out.println(mapList); if (mapList.size() != 0){ for (Map map:mapList ) { String WzInputId=(String) map.get("WzInputId"); BigDecimal resultTotalId= (BigDecimal) map.get("resultTotalId"); // 1. 创建 HttpClient 的实例 CloseableHttpClient httpClient = HttpClientBuilder.create().build(); // 2. 创建某种连接方法的实例 HttpGet httpGet = new HttpGet("http://172.16.33.106:40003/DG_Interface.asmx/Get_Quality_Info?WzInputId="+WzInputId); // 3. 调用第一步中创建好的实例的execute方法来执行第二步中创建好的链接类实例 HttpResponse httpResponse = httpClient.execute(httpGet); // 4. 读response获取HttpEntity if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = httpResponse.getEntity(); System.out.println(entity); // 5. 对得到后的内容进行处理 String result = EntityUtils.toString(entity, "utf-8"); System.out.println(result); try { JSONObject object = XmlToJsonUtil.xmlToJson(result); System.out.println("-----object------"); System.out.println(object); Mapmap1 = (Map) object.get("JsonResult"); System.out.println(map1); List mapList2= JSON.parseArray((String) map1.get("jsonResult")); if(mapList2.size() == 0){ return 0; } List>mapList9=mapList2; for (Map map3:mapList9 ) { //质检说明 String DeductionDescription=(String)map3.get("DEDUCT_SEASON"); //铁路专用线 String samplePlaceName=(String) map3.get("SAMPLE_PLACE_NAME"); //查询卸货点ID BigDecimal SamplePlaceId=tmstruckQualityResultMapper.selectSamplePlaceId(samplePlaceName); //扣水扣杂量 BigDecimal Deduction= new BigDecimal(Integer.parseInt(String.valueOf(map3.get("DEDUCT_NUMBER")))); //抽样时间 Date sampleDate= new Date((String)(map3.get("SAMPLE_DATE"))); //根据磅单号修改相应的质检实绩 TmstruckQualityResult tmstruckQualityResult = new TmstruckQualityResult(); //主键ID tmstruckQualityResult.setId(tmstruckQualityResultMapper.Count()); tmstruckQualityResult.setInsertTime(new Date()); tmstruckQualityResult.setInsertUsername("质检系统-物流系统"); tmstruckQualityResult.setInsertUpdateRemark("原料质检实绩"); //总实绩ID tmstruckQualityResult.setTotalResultId(resultTotalId); //卸货点 tmstruckQualityResult.setResultSamplingPointId(SamplePlaceId); //输入抽样时间 tmstruckQualityResult.setResultSamplingTime(sampleDate); //输入扣水扣杂量 tmstruckQualityResult.setResultDeduction(Deduction); tmstruckQualityResult.setResultDeductionDescription(DeductionDescription); tmstruckQualityResultMapper.insertSelective(tmstruckQualityResult); //更新计重实绩表中的是否质检完成字段 tmstruckWeightResultMapper.updateWzInputId(WzInputId); } } catch (DocumentException e) { e.printStackTrace(); } EntityUtils.consume(entity); } else { System.err.println(httpResponse.getStatusLine()); } // 6. 释放连接。无论执行方法是否成功,都必须释放连接 httpClient.close(); } } return 1; } }