package com.huimv.farm.damsubsidy.controller; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.UUID; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huimv.farm.damsubsidy.common.token.TokenSign; import com.huimv.farm.damsubsidy.common.utils.*; import com.huimv.farm.damsubsidy.entity.BaseAnimal; import com.huimv.farm.damsubsidy.entity.BillLandingInspection; import com.huimv.farm.damsubsidy.service.IBaseAnimalService; import com.huimv.farm.damsubsidy.service.IBillLandingInspectionService; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.net.*; import java.util.*; /** *

* 落地检 前端控制器 *

* * @author author * @since 2023-04-26 */ @RestController @RequestMapping("/bill-landing-inspection") @CrossOrigin public class BillLandingInspectionController { @Autowired private IBillLandingInspectionService iBillLandingInspectionService; @Autowired private IBaseAnimalService baseAnimalService; @Autowired private UploadImage uploadImage; @PostMapping("/addApplication") public Result addApplication(HttpServletRequest httpServletRequest, @RequestParam("inspectionNum") String inspectionNum, @RequestParam("cargoOwner") String cargoOwner, @RequestParam("ownerPhone") String ownerPhone, @RequestParam("animalType") String animalType, @RequestParam("animalNumberUp") String animalNumberUp, @RequestParam("useTo") String useTo, @RequestParam("startTran") String startTran, @RequestParam("reachTran") String reachTran, @RequestParam("veterId") String veter, @RequestParam("eartags") String eartags, @RequestParam(value = "quarantineImage", required = false) MultipartFile quarantineImage, @RequestParam(value = "image1", required = false) MultipartFile image1, @RequestParam(value ="image2", required = false) MultipartFile image2, @RequestParam(value ="image3", required = false) MultipartFile image3, @RequestParam(value ="image4", required = false) MultipartFile image4, @RequestParam(value ="image5", required = false) MultipartFile image5) throws IOException { return iBillLandingInspectionService.addApplication(httpServletRequest,inspectionNum,cargoOwner,ownerPhone,animalType,animalNumberUp,useTo,startTran,reachTran,veter,eartags,quarantineImage,image1,image2,image3,image4,image5); } @PostMapping("/cancelApplication") public Result cancelApplication(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ return iBillLandingInspectionService.cancelApplication(httpServletRequest,paramsMap); } //根据检疫证号返回全部耳标 @PostMapping("/getEartagNoBy") public Result getEartagNoBy(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ return iBillLandingInspectionService.getEartagNoBy(httpServletRequest,paramsMap); } @PostMapping("agreeApplication") public Result agreeApplication(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ return iBillLandingInspectionService.agreeApplication(httpServletRequest,paramsMap); } @PostMapping("/listApplication") public Result listApplication(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ return iBillLandingInspectionService.listApplication(httpServletRequest,paramsMap); } @PostMapping("/listDetail") public Result listDetail(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ String id = paramsMap.get("id"); return new Result(ResultCode.SUCCESS,iBillLandingInspectionService.getById(id)); } @PostMapping("/rejectApplication") public Result rejectApplication(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap){ return iBillLandingInspectionService.rejectApplication(httpServletRequest,paramsMap); } @PostMapping("/listReadyApplication") public Result listReadyApplication(){ return iBillLandingInspectionService.listReadyApplication(); } @PostMapping("/listPersonal") public Result listPersonal(HttpServletRequest httpServletRequest){ return new Result(ResultCode.SUCCESS,iBillLandingInspectionService.list(new QueryWrapper() .eq("inspection_sch",4) .eq("create_user",TokenSign.getMemberIdByJwtToken(httpServletRequest)) .isNull("reject_reason") .eq("is_delete",0))); } @Autowired private IBillLandingInspectionService billLandingInspectionService; @RequestMapping("/list") public Result list(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) { return billLandingInspectionService.list(httpServletRequest, paramsMap); } @RequestMapping("/listById") public Result listById(HttpServletRequest httpServletRequest, @RequestBody Map paramsMap) { return billLandingInspectionService.listById(httpServletRequest, paramsMap); } @RequestMapping("/addPay") public Result addPay(HttpServletRequest httpServletRequest, @RequestParam(name = "idCordBackUrl",required = false) MultipartFile idCordBackUrl, @RequestParam("id") String id) throws IOException { Map map = new HashMap<>(); if (ObjectUtil.isNotEmpty(idCordBackUrl)) { String content = uploadImage.getImageCom(idCordBackUrl);; map.put("url", content); } else { String content = null; map.put("url", ""); } map.put("id", id); return billLandingInspectionService.addPay(httpServletRequest, map); } @PostMapping("/QRImage") public Result QRImage(@RequestParam(name = "url") MultipartFile url) throws Exception { UploadImage uploadImage = new UploadImage(); String img = uploadImage.uploadImg(url); System.out.println(img); download(img,"ceshi.jpg","/home/image/test/"); String daying = daying("/home/image/test/ceshi.jpg"); JSONObject jsonObject = JSON.parseObject(daying); Object error_code = jsonObject.get("error_code"); if (Integer.parseInt(error_code.toString()) == 0) { Object action = jsonObject.get("data"); JSONObject jsonObject1 = JSON.parseObject(action.toString()); Object action1 = jsonObject1.get("ret"); Map map = new HashMap<>(); JSONArray jsonArray = JSON.parseArray(action1.toString()); for (int i = 0; i < jsonArray.size(); i++) { Object action2 = jsonArray.get(i); JSONObject jsonObject2 = JSON.parseObject(action2.toString()); Object key = jsonObject2.get("word_name"); Object action3 = jsonArray.get(i); JSONObject jsonObject3 = JSON.parseObject(action3.toString()); Object value = jsonObject3.get("word"); if (key.toString().equals("type")) { String s = value.toString(); if (s.equals("肉牛")) { value = 0; } else if (s.equals("肉羊")) { value = 1; } else { value = 2; } } if (key.toString().equals("unit")) { WordToNum wordToNum = new WordToNum(); Integer integer = wordToNum.ToNumber(value.toString()); value = integer; } map.put(key.toString(), value.toString()); } return new Result(ResultCode.SUCCESS,map); } else { return new Result(10001, "图片无法识别信息,请手动输入!!", false); } } public String daying(String filePath) throws Exception { // iocr识别apiUrl String recogniseUrl = "https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise"; byte[] imgData = FileUtil.readFileByBytes(filePath); String imgStr = Base64Util.encode(imgData); // 请求模板参数 String recogniseParams = "templateSign=822d6966a38a49fff811f77cf6119687&image=" + URLEncoder.encode(imgStr, "UTF-8"); // 请求分类器参数 String classifierParams = "classifierId=your_classfier_id&url=" + URLEncoder.encode(imgStr, "UTF-8"); String accessToken = AccessTokenUtils.getAuth(); // 请求模板识别 String result = HttpUtil.post(recogniseUrl, accessToken, recogniseParams); // 请求分类器识别 // String result = HttpUtil.post(recogniseUrl, accessToken, classifierParams); System.out.println(result); return result; } public static void download(String urlString, String filename,String savePath) throws Exception { // 构造URL URL url = new URL(urlString); // 打开连接 URLConnection con = url.openConnection(); //设置请求超时为5s con.setConnectTimeout(5*1000); // 输入流 InputStream is = con.getInputStream(); // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出的文件流 File sf=new File(savePath); if(!sf.exists()){ sf.mkdirs(); } // 获取图片的扩展名 String extensionName = filename.substring(filename.lastIndexOf(".") + 1); // 新的图片文件名 = 编号 +"."图片扩展名 // String newFileName = "bbb"+ "." + extensionName; OutputStream os = new FileOutputStream(/*sf.getPath()+"\\"*/savePath+filename); // 开始读取 while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } // 完毕,关闭所有链接 os.close(); is.close(); } // public static void main(String[] args) throws Exception { //// String aaa = "{\\\"data\\\":{\\\"ret\\\":[{\\\"probability\\\":{\\\"average\\\":0.9982159734,\\\"min\\\":0.9973089695,\\\"variance\\\":2.523568412E-7},\\\"location\\\":{\\\"top\\\":153,\\\"left\\\":1367,\\\"width\\\":229,\\\"height\\\":54},\\\"word_name\\\":\\\"number\\\",\\\"word\\\":\\\"6203664332\\\"},{\\\"probability\\\":{\\\"average\\\":0.9938939214,\\\"min\\\":0.9840265512,\\\"variance\\\":0.00004146178617},\\\"location\\\":{\\\"top\\\":401,\\\"left\\\":642,\\\"width\\\":163,\\\"height\\\":39},\\\"word_name\\\":\\\"unit\\\",\\\"word\\\":\\\"贰拾叁头\\\"},{\\\"probability\\\":{\\\"average\\\":0.9983806014,\\\"min\\\":0.9952685237,\\\"variance\\\":0.000001251832941},\\\"location\\\":{\\\"top\\\":281,\\\"left\\\":1171,\\\"width\\\":207,\\\"height\\\":36},\\\"word_name\\\":\\\"phone\\\",\\\"word\\\":\\\"18993224116\\\"},{\\\"probability\\\":{\\\"average\\\":0.999233,\\\"min\\\":0.993178,\\\"variance\\\":0.0000020},\\\"location\\\":{\\\"top\\\":663,\\\"left\\\":238,\\\"width\\\":297,\\\"height\\\":30},\\\"word_name\\\":\\\"earNum\\\",\\\"word\\\":\\\"262070202080845-867\\\"},{\\\"probability\\\":{\\\"average\\\":0.9994745255,\\\"min\\\":0.9987326264,\\\"variance\\\":1.896736848E-7},\\\"location\\\":{\\\"top\\\":506,\\\"left\\\":239,\\\"width\\\":229,\\\"height\\\":41},\\\"word_name\\\":\\\"startAddress\\\",\\\"word\\\":\\\"张掖市甘州区\\\"},{\\\"probability\\\":{\\\"average\\\":0.9997746348,\\\"min\\\":0.9987488985,\\\"variance\\\":1.789176167E-7},\\\"location\\\":{\\\"top\\\":955,\\\"left\\\":497,\\\"width\\\":168,\\\"height\\\":40},\\\"word_name\\\":\\\"carNum\\\",\\\"word\\\":\\\"甘G25786\\\"},{\\\"probability\\\":{\\\"average\\\":0.9998318553,\\\"min\\\":0.9996492863,\\\"variance\\\":1.672335692E-8},\\\"location\\\":{\\\"top\\\":309,\\\"left\\\":237,\\\"width\\\":114,\\\"height\\\":35},\\\"word_name\\\":\\\"userName\\\",\\\"word\\\":\\\"王金丽\\\"},{\\\"probability\\\":{\\\"average\\\":0.9999725819,\\\"min\\\":0.9999496937,\\\"variance\\\":5.238689482E-10},\\\"location\\\":{\\\"top\\\":404,\\\"left\\\":235,\\\"width\\\":83,\\\"height\\\":44},\\\"word_name\\\":\\\"type\\\",\\\"word\\\":\\\"肉牛\\\"},{\\\"probability\\\":{\\\"average\\\":0.999918282,\\\"min\\\":0.9998790026,\\\"variance\\\":1.542876049E-9},\\\"location\\\":{\\\"top\\\":379,\\\"left\\\":1305,\\\"width\\\":79,\\\"height\\\":47},\\\"word_name\\\":\\\"value\\\",\\\"word\\\":\\\"饲养\\\"},{\\\"probability\\\":{\\\"average\\\":0.9967396855,\\\"min\\\":0.9711526632,\\\"variance\\\":0.00004481409997},\\\"location\\\":{\\\"top\\\":598,\\\"left\\\":239,\\\"width\\\":646,\\\"height\\\":48},\\\"word_name\\\":\\\"endAddress\\\",\\\"word\\\":\\\"定西市通渭县金丽养殖农民专业合作社\\\"}],\\\"templateSign\\\":\\\"822d6966a38a49fff811f77cf6119687\\\",\\\"templateName\\\":\\\"动物检疫合格证明\\\",\\\"scores\\\":1.0,\\\"isStructured\\\":true,\\\"logId\\\":\\\"168506403112474\\\",\\\"templateMatchDegree\\\":0.9999999999999956,\\\"clockwiseAngle\\\":0.0},\\\"error_code\\\":0,\\\"error_msg\\\":\\\"\\\",\\\"log_id\\\":\\\"168506403112474\\\"}\""; //// JSONObject jsonObject = new JSONObject(aaa); //// System.out.println("yyyyy: " + jsonObject.toString()); // /*String s = "https://img.ifarmcloud.com/images/2023-05/f9ff6e91-1c05-4b03-b698-89b55075adeb.jpg"; // String[] split = s.split("/"); // System.out.println(split[5]);*/ //// BillLandingInspectionController billLandingInspectionController = new BillLandingInspectionController(); // String daying = "{\"data\":{\"ret\":[{\"probability\":{\"average\":0.9982159734,\"min\":0.9973089695,\"variance\":2.523568412E-7},\"location\":{\"top\":153,\"left\":1367,\"width\":229,\"height\":54},\"word_name\":\"number\",\"word\":\"6203664332\"},{\"probability\":{\"average\":0.9938939214,\"min\":0.9840265512,\"variance\":0.00004146178617},\"location\":{\"top\":401,\"left\":642,\"width\":163,\"height\":39},\"word_name\":\"unit\",\"word\":\"贰拾叁头\"},{\"probability\":{\"average\":0.9983806014,\"min\":0.9952685237,\"variance\":0.000001251832941},\"location\":{\"top\":281,\"left\":1171,\"width\":207,\"height\":36},\"word_name\":\"phone\",\"word\":\"18993224116\"},{\"probability\":{\"average\":0.999233,\"min\":0.993178,\"variance\":0.0000020},\"location\":{\"top\":663,\"left\":238,\"width\":297,\"height\":30},\"word_name\":\"earNum\",\"word\":\"262070202080845-867\"},{\"probability\":{\"average\":0.9994745255,\"min\":0.9987326264,\"variance\":1.896736848E-7},\"location\":{\"top\":506,\"left\":239,\"width\":229,\"height\":41},\"word_name\":\"startAddress\",\"word\":\"张掖市甘州区\"},{\"probability\":{\"average\":0.9997746348,\"min\":0.9987488985,\"variance\":1.789176167E-7},\"location\":{\"top\":955,\"left\":497,\"width\":168,\"height\":40},\"word_name\":\"carNum\",\"word\":\"甘G25786\"},{\"probability\":{\"average\":0.9998318553,\"min\":0.9996492863,\"variance\":1.672335692E-8},\"location\":{\"top\":309,\"left\":237,\"width\":114,\"height\":35},\"word_name\":\"userName\",\"word\":\"王金丽\"},{\"probability\":{\"average\":0.9999725819,\"min\":0.9999496937,\"variance\":5.238689482E-10},\"location\":{\"top\":404,\"left\":235,\"width\":83,\"height\":44},\"word_name\":\"type\",\"word\":\"肉牛\"},{\"probability\":{\"average\":0.999918282,\"min\":0.9998790026,\"variance\":1.542876049E-9},\"location\":{\"top\":379,\"left\":1305,\"width\":79,\"height\":47},\"word_name\":\"value\",\"word\":\"饲养\"},{\"probability\":{\"average\":0.9967396855,\"min\":0.9711526632,\"variance\":0.00004481409997},\"location\":{\"top\":598,\"left\":239,\"width\":646,\"height\":48},\"word_name\":\"endAddress\",\"word\":\"定西市通渭县金丽养殖农民专业合作社\"}],\"templateSign\":\"822d6966a38a49fff811f77cf6119687\",\"templateName\":\"动物检疫合格证明\",\"scores\":1.0,\"isStructured\":true,\"logId\":\"168506610976412\",\"templateMatchDegree\":0.9999999999999956,\"clockwiseAngle\":0.0},\"error_code\":0,\"error_msg\":\"\",\"log_id\":\"168506610976412\"}"; // System.out.println(daying); // JSONObject jsonObject = JSON.parseObject(daying); // Object action = jsonObject.get("data"); // System.out.println(action.toString()); // JSONObject jsonObject1 = JSON.parseObject(action.toString()); // Object action1 = jsonObject1.get("ret"); // System.out.println(action1); // Map map = new HashMap<>(); // JSONArray jsonArray = JSON.parseArray(action1.toString()); // for (int i = 0; i < jsonArray.size(); i++) { // JSONObject one = new JSONObject(); // Object action2 = jsonArray.get(i); // JSONObject jsonObject2 = JSON.parseObject(action2.toString()); // Object key = jsonObject2.get("word_name"); // System.out.println(key); // Object action3 = jsonArray.get(i); // JSONObject jsonObject3 = JSON.parseObject(action3.toString()); // Object value = jsonObject3.get("word"); // System.out.println(value); // map.put(key.toString(), value.toString()); // } // System.out.println(map); // } // // @RequestMapping("/test") // public Result test() { // String daying = "{\"data\":{\"ret\":[{\"probability\":{\"average\":0.9982159734,\"min\":0.9973089695,\"variance\":2.523568412E-7},\"location\":{\"top\":153,\"left\":1367,\"width\":229,\"height\":54},\"word_name\":\"number\",\"word\":\"6203664332\"},{\"probability\":{\"average\":0.9938939214,\"min\":0.9840265512,\"variance\":0.00004146178617},\"location\":{\"top\":401,\"left\":642,\"width\":163,\"height\":39},\"word_name\":\"unit\",\"word\":\"贰拾叁头\"},{\"probability\":{\"average\":0.9983806014,\"min\":0.9952685237,\"variance\":0.000001251832941},\"location\":{\"top\":281,\"left\":1171,\"width\":207,\"height\":36},\"word_name\":\"phone\",\"word\":\"18993224116\"},{\"probability\":{\"average\":0.999233,\"min\":0.993178,\"variance\":0.0000020},\"location\":{\"top\":663,\"left\":238,\"width\":297,\"height\":30},\"word_name\":\"earNum\",\"word\":\"262070202080845-867\"},{\"probability\":{\"average\":0.9994745255,\"min\":0.9987326264,\"variance\":1.896736848E-7},\"location\":{\"top\":506,\"left\":239,\"width\":229,\"height\":41},\"word_name\":\"startAddress\",\"word\":\"张掖市甘州区\"},{\"probability\":{\"average\":0.9997746348,\"min\":0.9987488985,\"variance\":1.789176167E-7},\"location\":{\"top\":955,\"left\":497,\"width\":168,\"height\":40},\"word_name\":\"carNum\",\"word\":\"甘G25786\"},{\"probability\":{\"average\":0.9998318553,\"min\":0.9996492863,\"variance\":1.672335692E-8},\"location\":{\"top\":309,\"left\":237,\"width\":114,\"height\":35},\"word_name\":\"userName\",\"word\":\"王金丽\"},{\"probability\":{\"average\":0.9999725819,\"min\":0.9999496937,\"variance\":5.238689482E-10},\"location\":{\"top\":404,\"left\":235,\"width\":83,\"height\":44},\"word_name\":\"type\",\"word\":\"肉牛\"},{\"probability\":{\"average\":0.999918282,\"min\":0.9998790026,\"variance\":1.542876049E-9},\"location\":{\"top\":379,\"left\":1305,\"width\":79,\"height\":47},\"word_name\":\"value\",\"word\":\"饲养\"},{\"probability\":{\"average\":0.9967396855,\"min\":0.9711526632,\"variance\":0.00004481409997},\"location\":{\"top\":598,\"left\":239,\"width\":646,\"height\":48},\"word_name\":\"endAddress\",\"word\":\"定西市通渭县金丽养殖农民专业合作社\"}],\"templateSign\":\"822d6966a38a49fff811f77cf6119687\",\"templateName\":\"动物检疫合格证明\",\"scores\":1.0,\"isStructured\":true,\"logId\":\"168506610976412\",\"templateMatchDegree\":0.9999999999999956,\"clockwiseAngle\":0.0},\"error_code\":0,\"error_msg\":\"\",\"log_id\":\"168506610976412\"}"; // System.out.println(daying); // JSONObject jsonObject = JSON.parseObject(daying); // Object action = jsonObject.get("data"); // System.out.println(action.toString()); // JSONObject jsonObject1 = JSON.parseObject(action.toString()); // Object action1 = jsonObject1.get("ret"); // System.out.println(action1); // Map map = new HashMap<>(); // JSONArray jsonArray = JSON.parseArray(action1.toString()); // for (int i = 0; i < jsonArray.size(); i++) { // Object action2 = jsonArray.get(i); // JSONObject jsonObject2 = JSON.parseObject(action2.toString()); // Object key = jsonObject2.get("word_name"); // System.out.println(key); // Object action3 = jsonArray.get(i); // JSONObject jsonObject3 = JSON.parseObject(action3.toString()); // Object value = jsonObject3.get("word"); // if (key.toString().equals("type")) { // String s = value.toString(); // if (s.equals("肉牛")) { // value = 0; // } else if (s.equals("肉羊")) { // value = 1; // } else { // value = 2; // } // } // if (key.toString().equals("unit")) { // WordToNum wordToNum = new WordToNum(); // Integer integer = wordToNum.ToNumber(value.toString()); // value = integer; // } // System.out.println(value); // map.put(key.toString(), value.toString()); // } // System.out.println(map); // return new Result(ResultCode.SUCCESS,map); // } }