package com.docus.bgts.handler; import com.alibaba.fastjson.JSON; import com.docus.bgts.entity.AfCollectTask; import com.docus.bgts.entity.ReportDownDto; import com.docus.bgts.entity.ReportDownPatientDto; import com.docus.bgts.entity.ReportDownScanFileDto; import com.docus.bgts.enums.Codes; import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import com.docus.bgts.utils.ResultUtils; import com.docus.bgts.utils.XmlUtils; import org.apache.bcel.classfile.Code; import org.apache.commons.lang3.StringUtils; import org.dom4j.Element; import org.springframework.beans.factory.annotation.Autowired; import javax.jws.WebService; import java.io.ByteArrayInputStream; import java.util.*; @WebService public class TBasicWebService implements ITBasicWebService { @Autowired IAfCollectTaskService afCollectTaskService; @Override public String pushSurveyReport(String xml) { try { //解析XML XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(xml.getBytes("UTF-8"))); // 获取患者主索引号 String empId = String.valueOf(FileUtils.getJsonByName(Codes.EMP_ID.getMessage())); Map headMap = new HashMap<>(); headMap.put("Content-Type", "application/json"); ReportDownDto reportDownDto; //获取根节点 List elementList = xmlUtils.getJsonByName(); //key String serialnmnKey=String.valueOf(FileUtils.getJsonByName("serialnum")); String filetitleKey=String.valueOf(FileUtils.getJsonByName("filetitle")); String downurlKey=String.valueOf(FileUtils.getJsonByName("downurl")); ReportDownScanFileDto reportDownScanFileDto; ReportDownPatientDto reportDownPatientDto; //临时资料存储 String serialnum; String filetitle; String downurl; String collectorid=String.valueOf(FileUtils.getJsonByName("collectorid")); String assortid=String.valueOf(FileUtils.getJsonByName("assortid")); reportDownDto = new ReportDownDto(); reportDownDto.setCollectorid(collectorid); reportDownDto.setAssortid(assortid); //插入文件af_collect_task表数据 Long id=insertTask(empId,collectorid); reportDownDto.setTaskid(id); //获取基本数据信息 List reportDownDtoArr=new ArrayList<>(); reportDownPatientDto=new ReportDownPatientDto(); reportDownPatientDto.setJzh(elementList.get(0).element(empId).getText()); reportDownDto.setPatient(reportDownPatientDto); for (Element element : elementList) { serialnum=element.element(serialnmnKey).getText(); filetitle=element.element(filetitleKey).getText(); downurl=element.element(downurlKey).getText(); reportDownScanFileDto=new ReportDownScanFileDto(); reportDownScanFileDto.setDownurl(downurl); reportDownScanFileDto.setFiletitle(filetitle); reportDownScanFileDto.setSerialnum(serialnum); reportDownScanFileDto.setFilesource(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource")))); reportDownScanFileDto.setFilestoragetype(Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype")))); reportDownDtoArr.add(reportDownScanFileDto); } if(reportDownDtoArr.size()<=0){ throw new RuntimeException("不存在必要的基本信息"); }else { reportDownDto.setScanfiles(reportDownDtoArr); } String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class)); // String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap); Map resMap = JSON.parseObject(post, Map.class); System.out.println(resMap); if (String.valueOf(resMap.get("code")).equals("500")) { return ResultUtils.fail(String.valueOf(resMap.get("msg"))); } else { return ResultUtils.success().asXML(); } } catch (RuntimeException e){ return ResultUtils.fail(e.getMessage()); } catch (Exception e) { e.printStackTrace(); } return ResultUtils.fail(); } /** * 插入文件af_collect_task表数据 * @param jzh jzh * @param collectorid 文件id */ private Long insertTask(String jzh, String collectorid) { AfCollectTask afCollectTask=new AfCollectTask(); String patientId = afCollectTaskService.getpatientIdByEmpId(jzh); if(StringUtils.isBlank(patientId)){ throw new RuntimeException("操作的病案信息不存在"); } Date date = new Date(); afCollectTask.setPatientId(patientId); afCollectTask.setSysflag(collectorid); afCollectTask.setState("0"); afCollectTask.setSyncTime(date); afCollectTask.setC1(jzh); boolean save = afCollectTaskService.save(afCollectTask); if(!save){ throw new RuntimeException("插入病案任务表数据出错"); } return afCollectTask.getId(); } }