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 com.steerinfo.dil.util.DataChange; 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 = "30 10 10 * * ?") public int insertQualityResult() throws IOException, DocumentException { //先查出所有需要质检的但是没有质检的磅单号 List> mapList = tmstruckWeightResultMapper.selectWzInputId(); if (mapList.size() != 0){ for (Map map:mapList ) { BigDecimal resultTotalId= (BigDecimal) map.get("resultTotalId"); String capacityNumber = (String) map.get("capacityNumber"); if(capacityNumber==null || resultTotalId==null){ continue; } String grossWeightTime = (String) map.get("grossWeightTime"); String WzInputId = grossWeightTime + capacityNumber.substring(2); // 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); Mapmap1 = (Map) object.get("JsonResult"); List mapList2= JSON.parseArray((String) map1.get("jsonResult")); if(mapList2 == null || mapList2.size() == 0){ continue; } List> mapList9= mapList2; if(mapList9.get(0) != null){ //判断是否生成报告单,如果生成则生成质检实绩,否则退出 Map map3 = mapList9.get(0); Object value = map3.get("REPORT_ID"); if("".equals(value)){ continue; } //质检说明 String DeductionDescription=(String)map3.get("DEDUCT_SEASON"); //获取卸货点 String samplePlaceName=(String) map3.get("SAMPLE_PLACE_NAME"); //查询卸货点ID BigDecimal SamplePlaceId=tmstruckQualityResultMapper.selectSamplePlaceId(samplePlaceName); //扣水扣杂量 BigDecimal Deduction= DataChange.dataToBigDecimal(map3.get("DEDUCT_NUMBER")); //抽样时间 Date sampleDate= new Date((String)(map3.get("SAMPLE_DATE"))); //获取检验结果 String element_value =(String) map3.get("ELEMENT_VALUE"); //根据磅单号新增相应的质检实绩 TmstruckQualityResult tmstruckQualityResult = new TmstruckQualityResult(); //主键ID tmstruckQualityResult.setId(tmstruckQualityResultMapper.qualityId()); tmstruckQualityResult.setInsertTime(new Date()); tmstruckQualityResult.setInsertUsername("质检系统-物流系统"); tmstruckQualityResult.setInsertUpdateRemark("原料质检实绩"); //总实绩ID tmstruckQualityResult.setTotalResultId(resultTotalId); //卸货点 tmstruckQualityResult.setResultSamplingPointId(SamplePlaceId); //输入抽样时间 tmstruckQualityResult.setResultSamplingTime(sampleDate); //输入扣水扣杂量 tmstruckQualityResult.setResultDeduction(Deduction); tmstruckQualityResult.setResultDeductionDescription(DeductionDescription); tmstruckQualityResult.setResultIssampling("已抽样"); //水分吨位 tmstruckQualityResult.setElementValue(element_value); tmstruckQualityResultMapper.insertSelective(tmstruckQualityResult); //更新计重实绩表中的是否质检完成字段 //tmstruckWeightResultMapper.updateWzInputId(resultTotalId); } } catch (DocumentException e) { e.printStackTrace(); } EntityUtils.consume(entity); } else { System.err.println(httpResponse.getStatusLine()); } // 6. 释放连接。无论执行方法是否成功,都必须释放连接 httpClient.close(); } } return 1; } //@Override //public int deleteQualityResult() { // //查询有重复的质检实绩 // List> mapList = tmstruckQualityResultMapper.selectRepeatResult(); // for(Map map : mapList) { // tmstruckQualityResultMapper.deleteQualityResult() // } //} }