14051067536623931c8afddddbafa3371bd6b4b7.svn-base 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package UIB.JHY;
  2. import CoreFS.SA01.CoreIComponent;
  3. import CoreFS.SA06.CoreReturnObject;
  4. import UIB.COM.XmlSqlParsersFactory;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONException;
  7. import com.alibaba.fastjson.JSONObject;
  8. import org.apache.axis.client.Call;
  9. import org.apache.axis.client.Service;
  10. import org.apache.commons.collections.CollectionUtils;
  11. import org.springframework.jdbc.support.rowset.SqlRowSet;
  12. import javax.xml.namespace.QName;
  13. import javax.xml.rpc.ParameterMode;
  14. import javax.xml.rpc.encoding.XMLType;
  15. import java.net.URL;
  16. import java.sql.ResultSet;
  17. import java.sql.ResultSetMetaData;
  18. import java.sql.SQLException;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. /**
  22. * @author meiguiping
  23. * @desc 按检验项目对原始数据查询
  24. * @date 2014/3/27
  25. */
  26. public class JHY02 extends CoreIComponent {
  27. /**
  28. * qltyCD2 二级编码 即:拉力,冲击等区分
  29. * qltyCD3 三级编码 即:伸长率,屈服强度,抗拉强度等
  30. * smp_no 委托编号
  31. */
  32. public CoreReturnObject doQltyCdQuery(String smp_no, String specimen_no, String seq, String qltyCD2, String qltyCD3) throws Exception {
  33. //获取所有的检化验编码,如a,b,Lo,S等
  34. CoreReturnObject cro = new CoreReturnObject();
  35. String sqlOne = XmlSqlParsersFactory.getSql("JHY02.QLTY_QCM_SELECT");
  36. cro = this.getDao("testDao").ExecutequeryForRowSet(sqlOne, new Object[]{smp_no, qltyCD3});
  37. SqlRowSet srs = (SqlRowSet) cro.getResult();
  38. //获取目的SQL
  39. String repSql = ",MAX(DECODE('{2}', T3.QLTY_OPE_CD , T3.QLTY_VAL , NULL)) \"{3}\"";
  40. String temp = "";
  41. StringBuffer sBuffer = new StringBuffer(350);
  42. String qltyNm = "";
  43. while (srs.next()) {
  44. if (srs.getString(1) == null) {
  45. continue;
  46. }
  47. temp = repSql.replaceFirst("[{]+[2]+[}]+", srs.getString(1)).replaceFirst("[{]+[3]+[}]+", srs.getString("QLTY_OPE_CFNM"));//检验项目
  48. sBuffer.append(temp);
  49. }
  50. String sqlAim = XmlSqlParsersFactory
  51. .getSql("JHY02.QLTY_QCMVAL_SELECT")
  52. .replaceFirst("[{]+[1]+[}]+", sBuffer.toString());
  53. cro = this.getDao("testDao").ExcuteQuery(sqlAim, new Object[]{smp_no, qltyCD2, qltyCD3, smp_no});
  54. return cro;
  55. }
  56. /**
  57. * @param list 取样编号集合
  58. * @return CoreFS.SA06.CoreReturnObject
  59. * @desc 发送试样检测值
  60. * @date 2022/7/16 17:56
  61. * @author Ljy
  62. */
  63. public CoreReturnObject doSendQltyValue(ArrayList list) throws Exception {
  64. //String urlStr = "http://172.16.0.127:8089/Quality/WebService?wsdl";
  65. //22.09.09 从新改了服务
  66. String urlStr = "http://10.90.0.127:8089/Quality/WebService?wsdl";
  67. CoreReturnObject cro = new CoreReturnObject();
  68. if(CollectionUtils.isEmpty(list)) {
  69. cro.setResult("请选择要发送的取样信息!");
  70. return cro;
  71. }
  72. if(list.size() != 2) {
  73. cro.setResult("请选择要发送的取样信息!");
  74. return cro;
  75. }
  76. List<String> specimen_noList = (List<String>) list.get(0);
  77. String create_name = (String) list.get(1);
  78. if(CollectionUtils.isEmpty(specimen_noList)) {
  79. cro.setResult("请选择要发送的取样信息!");
  80. return cro;
  81. }
  82. String ret = "";
  83. String tar = "";
  84. JSONArray array = new JSONArray();
  85. for (String specimen_no : specimen_noList) {
  86. String sqlOne = XmlSqlParsersFactory.getSql("JHY02.QLTY_SEND_ITEM_VALUE_SELECT").replace("?", "'" + specimen_no + "'");
  87. ResultSet rs = this.getDao("testDao").ExceuteQueryForResultSet(sqlOne, new Object[]{specimen_no});
  88. JSONObject arrayjo = resultSetToJsonArry(rs, specimen_no, create_name);
  89. array.add(arrayjo);
  90. }
  91. if (array.size() <= 0) {
  92. cro.setResult("未查询到试样检测值!");
  93. return cro;
  94. }
  95. Object[] values = new Object[1];
  96. tar = array.toJSONString();
  97. values[0] = tar;
  98. try {
  99. ret = webServiceAxisCase(urlStr,
  100. "http://dao.hnshituo.com/", "SetPHYResult", values);
  101. System.out.println("发送试样检测值返回数据---" + ret);
  102. JSONObject rtjo = JSONObject.parseObject(ret);
  103. if (rtjo.get("code") == null || Integer.parseInt(rtjo.get("code").toString()) != 200) {
  104. System.out.println("发送试样检测值失败!json:" + tar);
  105. cro.setResult(rtjo.get("message"));
  106. } else {
  107. //修改发送状态
  108. for (String specimen_no : specimen_noList) {
  109. ComCallProc comCallProc = new ComCallProc();
  110. ArrayList send_flag_list = new ArrayList();
  111. send_flag_list.add("JHY02.UPDATE_SEND_FLAG");
  112. send_flag_list.add(specimen_no);
  113. ComSave comSave = new ComSave();
  114. comSave.doSimpleSave("testDao",send_flag_list);
  115. }
  116. cro.setResult("200");
  117. }
  118. } catch (Exception e) {
  119. e.printStackTrace();
  120. }
  121. return cro;
  122. }
  123. /**
  124. * 将resultset 转为json数组
  125. *
  126. * @param rs
  127. * @return
  128. * @throws SQLException
  129. * @throws JSONException
  130. */
  131. public static JSONObject resultSetToJsonArry(ResultSet rs, String specimen_no, String create_name) throws SQLException, JSONException {
  132. ResultSetMetaData metaData = rs.getMetaData();
  133. int columnCount = metaData.getColumnCount();
  134. JSONObject jo = new JSONObject();
  135. JSONObject arrayjo = new JSONObject();
  136. JSONArray ja = new JSONArray();
  137. while (rs.next()) {
  138. JSONObject jsonObj = new JSONObject();
  139. for (int i = 1; i <= columnCount; i++) {
  140. String columnName = metaData.getColumnLabel(i);
  141. String value = rs.getString(columnName);
  142. jsonObj.put(columnName, value);
  143. }
  144. jsonObj.put("CREATE_NAME", create_name);
  145. ja.add(jsonObj);
  146. }
  147. arrayjo.put("PHY", ja);
  148. arrayjo.put("SPECIMEN_NO", specimen_no);
  149. return arrayjo;
  150. // return array1;
  151. }
  152. /**
  153. * 调用webservice接口
  154. * url:调用路径
  155. * TargetSpaceName:命名空间名,可在浏览器输入接口地址查看
  156. * serviceName:调用方法名
  157. * keys Object[] 对象数组类型:方法参数名
  158. * values Object[] 对象数组类型:参数值
  159. */
  160. public static String webServiceAxisCase(String url, String TargetSpaceName, String serviceName,
  161. Object[] values) throws Exception {
  162. if (values.length != 1)
  163. throw new IllegalArgumentException("接口方法参数与参数值不匹配!");
  164. String result = "";
  165. try {
  166. String endpoint = url;
  167. //直接引用远程的wsdl文件
  168. Service service = new Service();
  169. Call call = (Call) service.createCall();
  170. call.setTargetEndpointAddress(new URL(endpoint));
  171. //call.setOperationName(serviceName);//调用的方法名 当这种调用不到的时候,可以使用下面的,加入命名空间名
  172. call.setOperationName(new QName(TargetSpaceName, serviceName));// 调用的方法名 加入命名空间名
  173. for (int i = 0; i < values.length; i++) {
  174. //String key = (String) keys[i]; //方法参数
  175. Object value = values[i]; //参数值
  176. if (value == null) {
  177. call.addParameter("arg" + i, XMLType.XSD_STRING, ParameterMode.IN);
  178. } else if (value instanceof String) {
  179. call.addParameter("arg" + i, XMLType.XSD_STRING, ParameterMode.IN);
  180. } else if (value instanceof Integer) {
  181. call.addParameter("arg" + i, XMLType.XSD_INTEGER, ParameterMode.IN);
  182. } else if (value instanceof Boolean) {
  183. call.addParameter("arg" + i, XMLType.XSD_BOOLEAN, ParameterMode.IN);
  184. }
  185. }
  186. call.setReturnType(XMLType.XSD_STRING);// 设置返回类型
  187. result = (String) call.invoke(values);
  188. // 给方法传递参数,并且调用方法
  189. } catch (Exception e) {
  190. System.err.println(e.toString());
  191. }
  192. return result;
  193. }
  194. }