|  | @ -0,0 +1,197 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.util;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
	
		
			
				|  |  | import com.yihu.fastdfs.FastDFSUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.device.DeviceSosLogDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.device.PatientDeviceDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DevicePatientDevice;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DeviceSosLogDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.exception.business.file_upload.*;
 | 
	
		
			
				|  |  | import com.yihu.jw.patient.dao.BasePatientDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.iot.common.UploadVO;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.common.LatitudeUtils;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.http.HttpClientUtil;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.apache.http.NameValuePair;
 | 
	
		
			
				|  |  | import org.apache.http.message.BasicNameValuePair;
 | 
	
		
			
				|  |  | import org.csource.common.MyException;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  | import org.springframework.web.multipart.MultipartFile;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.io.IOException;
 | 
	
		
			
				|  |  | import java.io.InputStream;
 | 
	
		
			
				|  |  | import java.security.NoSuchAlgorithmException;
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by Bing on 2021/8/28.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Component
 | 
	
		
			
				|  |  | public class SecurityOrderUtil {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Value("${cloudCare.url}")
 | 
	
		
			
				|  |  |     private String cloudCareUrl;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private PatientDeviceDao patientDeviceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BasePatientDao patientDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private HttpClientUtil httpClientUtil;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private FastDFSUtil fastDFSHelper;
 | 
	
		
			
				|  |  |     @Value("${fastDFS.fastdfs_file_url}")
 | 
	
		
			
				|  |  |     private String fastdfs_file_url;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DeviceSosLogDao sosLogDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /***创建安防工单***/
 | 
	
		
			
				|  |  |     public JSONObject createSecurityOrder(String deviceSN, String sceneUrl, JSONObject result, Integer orderSource, String dictCode, String topicItem, String warnInfo){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             String lat = "";
 | 
	
		
			
				|  |  |             String lon = "";
 | 
	
		
			
				|  |  |             List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByDeviceSn(deviceSN);
 | 
	
		
			
				|  |  |             if (devicePatientDeviceDos.size()>0){
 | 
	
		
			
				|  |  |                 DevicePatientDevice deviceDO = devicePatientDeviceDos.get(0);
 | 
	
		
			
				|  |  |                 Map<String, String> json = null;
 | 
	
		
			
				|  |  |                 if (org.apache.commons.lang.StringUtils.isNotBlank(deviceDO.getSosAddress())) {
 | 
	
		
			
				|  |  |                     json = LatitudeUtils.getGeocoderLatitude(deviceDO.getSosAddress().replace("G.", "").replace("(糖友网)", "").replace("(高友网)", ""));
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (json != null) {
 | 
	
		
			
				|  |  |                     lat = json.get("lat").toString();
 | 
	
		
			
				|  |  |                     lon = json.get("lng").toString();
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 BasePatientDO patientDO = patientDao.findById(deviceDO.getUser());
 | 
	
		
			
				|  |  |                 String  url = cloudCareUrl+"/cloudCare/noLogin/security/createOrder";
 | 
	
		
			
				|  |  |                 String hospital = "";
 | 
	
		
			
				|  |  |                 String sql ="select DISTINCT pack.org_code,pack.org_name " +
 | 
	
		
			
				|  |  |                         " from base_service_package_sign_record sr,base_service_package_record pr,base_service_package_item item ,base_service_package pack " +
 | 
	
		
			
				|  |  |                         "where pr.patient = '"+patientDO.getId()+"' and sr.id = pr.sign_id and pr.service_package_id = item.service_package_id and  item.`code`='"+topicItem+"'  and item.service_package_id = pack.id " +
 | 
	
		
			
				|  |  |                         "  and pack.del=1";
 | 
	
		
			
				|  |  |                 List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |                 if(sqlResult.size()>0){
 | 
	
		
			
				|  |  |                     hospital = sqlResult.get(0).get("org_code")+"";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 String serveDesc = "";
 | 
	
		
			
				|  |  |                 String sqlDesc = "SELECT dict_value from wlyy_hospital_sys_dict WHERE dict_code = '"+dictCode+"' and dict_name = 'security_server_dict'";
 | 
	
		
			
				|  |  |                 List<Map<String,Object>> listTmp = jdbcTemplate.queryForList(sqlDesc);
 | 
	
		
			
				|  |  |                 if (listTmp!=null&&listTmp.size()>0){
 | 
	
		
			
				|  |  |                     serveDesc = listTmp.get(0).get("dict_value")+"";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |                 jsonObject.put("patient",patientDO.getId());
 | 
	
		
			
				|  |  |                 jsonObject.put("patientName",patientDO.getName());
 | 
	
		
			
				|  |  |                 jsonObject.put("patientPhone",patientDO.getMobile());
 | 
	
		
			
				|  |  |                 jsonObject.put("serveDesc",serveDesc);
 | 
	
		
			
				|  |  |                 jsonObject.put("hospital",sqlResult.get(0).get("org_code"));
 | 
	
		
			
				|  |  |                 jsonObject.put("serveAddress",deviceDO.getSosAddress());
 | 
	
		
			
				|  |  |                 jsonObject.put("serveLat",lat);
 | 
	
		
			
				|  |  |                 jsonObject.put("serveLon",lon);
 | 
	
		
			
				|  |  |                 jsonObject.put("topicItem",topicItem);
 | 
	
		
			
				|  |  |                 jsonObject.put("deviceSn",deviceSN);
 | 
	
		
			
				|  |  |                 jsonObject.put("warnInfo",warnInfo);
 | 
	
		
			
				|  |  |                 if (StringUtils.isNotBlank(sceneUrl)){
 | 
	
		
			
				|  |  |                     jsonObject.put("sceneImg",sceneUrl);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 JSONObject jsonObjectParam = new JSONObject();
 | 
	
		
			
				|  |  |                 jsonObjectParam.put("order", jsonObject);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |                 params.add(new BasicNameValuePair("jsonData", jsonObjectParam.toJSONString()));
 | 
	
		
			
				|  |  |                 params.add(new BasicNameValuePair("warnStr", serveDesc));
 | 
	
		
			
				|  |  |                 params.add(new BasicNameValuePair("orderSource", orderSource+""));
 | 
	
		
			
				|  |  |                 String response = httpClientUtil.post(url, params,"UTF-8");
 | 
	
		
			
				|  |  |                 System.out.println(response);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /***创建紧急工单****/
 | 
	
		
			
				|  |  |     public void createEmeOrder(DeviceSosLogDO logDO, String orderSource){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql =" select Distinct pack.org_code,pack.org_name\n" +
 | 
	
		
			
				|  |  |                 "from base_service_package_sign_record sr INNER JOIN base_service_package_record pr\n" +
 | 
	
		
			
				|  |  |                 "on sr.id = pr.sign_id and sr.status=1 INNER JOIN base_service_package_item item on pr.service_package_id = item.service_package_id and item.del=1 \n" +
 | 
	
		
			
				|  |  |                 "INNER JOIN base_service_package pack on pr.service_package_id = pack.id where item.code='emergencyAssistance' and sr.patient='"+logDO.getPatient()+"'";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |         if (sqlResult.size()>0){
 | 
	
		
			
				|  |  |             JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |             jsonObject.put("serveAddress",logDO.getSosAddress());
 | 
	
		
			
				|  |  |             jsonObject.put("serveLon",logDO.getSosLon());
 | 
	
		
			
				|  |  |             jsonObject.put("serveLat",logDO.getSosLat());
 | 
	
		
			
				|  |  |             jsonObject.put("orgCode",sqlResult.get(0).get("org_code").toString());
 | 
	
		
			
				|  |  |             jsonObject.put("orgName",sqlResult.get(0).get("org_name").toString());
 | 
	
		
			
				|  |  |             jsonObject.put("patient",logDO.getPatient());
 | 
	
		
			
				|  |  |             jsonObject.put("patientName",logDO.getPatientName());
 | 
	
		
			
				|  |  |             jsonObject.put("deviceSn",logDO.getDeviceSn());
 | 
	
		
			
				|  |  |             String url = cloudCareUrl+"cloudCare/noLogin/emergency_assistance/newOrder";
 | 
	
		
			
				|  |  |             List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |             params.add(new BasicNameValuePair("jsonData", jsonObject.toJSONString()));
 | 
	
		
			
				|  |  |             params.add(new BasicNameValuePair("patientId", logDO.getPatient()));
 | 
	
		
			
				|  |  |             params.add(new BasicNameValuePair("orderSource", orderSource));//工单来源工单发起来源状态 1APP 2手环 3居家报警 4拐杖
 | 
	
		
			
				|  |  |             String response = httpClientUtil.post(url, params,"UTF-8");
 | 
	
		
			
				|  |  |             System.out.println(response);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         sosLogDao.save(logDO);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public UploadVO uploadImg(MultipartFile file)throws Exception{
 | 
	
		
			
				|  |  |         String originalFilename = file.getOriginalFilename();
 | 
	
		
			
				|  |  |         InputStream inputStream = file.getInputStream();
 | 
	
		
			
				|  |  |         UploadVO uploadVO = uploadImg2(inputStream,originalFilename,file.getSize(),fastdfs_file_url);
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public UploadVO uploadImg2(InputStream inputStream, String originalFileName,long fileSize,String fastdfs_file_url) throws NoSuchAlgorithmException, IOException, MyException {
 | 
	
		
			
				|  |  |         // 得到文件的完整名称  xxx.txt
 | 
	
		
			
				|  |  |         if( null == inputStream){
 | 
	
		
			
				|  |  |             throw new FileInputStreamEmptyException("图片文件流不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(originalFileName)){
 | 
	
		
			
				|  |  |             throw new FileNameEmptyException("图片文件名不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fastdfs_file_url)){
 | 
	
		
			
				|  |  |             throw new FastfdsFileURLEmptyException("fastdfs url不可为空!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //得到文件类型
 | 
	
		
			
				|  |  |         String fileType = originalFileName.substring(originalFileName.lastIndexOf(".") + 1).toLowerCase();
 | 
	
		
			
				|  |  |         if(StringUtils.isBlank(fileType)||!"jpg,jpeg,png".contains(fileType)){
 | 
	
		
			
				|  |  |             throw new FileWrongFormatException("图片文件格式不正确,请上传jpg,jpeg,png等任一格式!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         long max = 5*1024*1024;
 | 
	
		
			
				|  |  |         if(fileSize > max){
 | 
	
		
			
				|  |  |             throw new FileTooLargeSizeException("图片文件过大,请不要超过5M!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String fileName = originalFileName.substring(0, originalFileName.lastIndexOf("."));
 | 
	
		
			
				|  |  |         //上传到fastdfs
 | 
	
		
			
				|  |  |         ObjectNode objectNode = fastDFSHelper.upload(inputStream, fileType, "");
 | 
	
		
			
				|  |  |         //解析返回的objectNode
 | 
	
		
			
				|  |  |         UploadVO uploadVO = new UploadVO();
 | 
	
		
			
				|  |  |         uploadVO.setFileName(fileName);
 | 
	
		
			
				|  |  |         uploadVO.setFileType(fileType);
 | 
	
		
			
				|  |  |         uploadVO.setFullUri(objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         uploadVO.setFullUrl(fastdfs_file_url + objectNode.get("fileId").toString().replaceAll("\"", ""));
 | 
	
		
			
				|  |  |         return uploadVO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |