| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- package UIB.JHY;
- import CoreFS.SA01.CoreIComponent;
- import CoreFS.SA06.CoreReturnObject;
- import UIB.COM.XmlSqlParsersFactory;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONException;
- import com.alibaba.fastjson.JSONObject;
- import org.apache.axis.client.Call;
- import org.apache.axis.client.Service;
- import org.apache.commons.collections.CollectionUtils;
- import org.springframework.jdbc.support.rowset.SqlRowSet;
- import javax.xml.namespace.QName;
- import javax.xml.rpc.ParameterMode;
- import javax.xml.rpc.encoding.XMLType;
- import java.net.URL;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author meiguiping
- * @desc 按检验项目对原始数据查询
- * @date 2014/3/27
- */
- public class JHY02 extends CoreIComponent {
- /**
- * qltyCD2 二级编码 即:拉力,冲击等区分
- * qltyCD3 三级编码 即:伸长率,屈服强度,抗拉强度等
- * smp_no 委托编号
- */
- public CoreReturnObject doQltyCdQuery(String smp_no, String specimen_no, String seq, String qltyCD2, String qltyCD3) throws Exception {
- //获取所有的检化验编码,如a,b,Lo,S等
- CoreReturnObject cro = new CoreReturnObject();
- String sqlOne = XmlSqlParsersFactory.getSql("JHY02.QLTY_QCM_SELECT");
- cro = this.getDao("testDao").ExecutequeryForRowSet(sqlOne, new Object[]{smp_no, qltyCD3});
- SqlRowSet srs = (SqlRowSet) cro.getResult();
- //获取目的SQL
- String repSql = ",MAX(DECODE('{2}', T3.QLTY_OPE_CD , T3.QLTY_VAL , NULL)) \"{3}\"";
- String temp = "";
- StringBuffer sBuffer = new StringBuffer(350);
- String qltyNm = "";
- while (srs.next()) {
- if (srs.getString(1) == null) {
- continue;
- }
- temp = repSql.replaceFirst("[{]+[2]+[}]+", srs.getString(1)).replaceFirst("[{]+[3]+[}]+", srs.getString("QLTY_OPE_CFNM"));//检验项目
- sBuffer.append(temp);
- }
- String sqlAim = XmlSqlParsersFactory
- .getSql("JHY02.QLTY_QCMVAL_SELECT")
- .replaceFirst("[{]+[1]+[}]+", sBuffer.toString());
- cro = this.getDao("testDao").ExcuteQuery(sqlAim, new Object[]{smp_no, qltyCD2, qltyCD3, smp_no});
- return cro;
- }
- /**
- * @param list 取样编号集合
- * @return CoreFS.SA06.CoreReturnObject
- * @desc 发送试样检测值
- * @date 2022/7/16 17:56
- * @author Ljy
- */
- public CoreReturnObject doSendQltyValue(ArrayList list) throws Exception {
- //String urlStr = "http://172.16.0.127:8089/Quality/WebService?wsdl";
- //22.09.09 从新改了服务
- String urlStr = "http://10.90.0.127:8089/Quality/WebService?wsdl";
- CoreReturnObject cro = new CoreReturnObject();
- if(CollectionUtils.isEmpty(list)) {
- cro.setResult("请选择要发送的取样信息!");
- return cro;
- }
- if(list.size() != 2) {
- cro.setResult("请选择要发送的取样信息!");
- return cro;
- }
- List<String> specimen_noList = (List<String>) list.get(0);
- String create_name = (String) list.get(1);
- if(CollectionUtils.isEmpty(specimen_noList)) {
- cro.setResult("请选择要发送的取样信息!");
- return cro;
- }
- String ret = "";
- String tar = "";
- JSONArray array = new JSONArray();
- for (String specimen_no : specimen_noList) {
- String sqlOne = XmlSqlParsersFactory.getSql("JHY02.QLTY_SEND_ITEM_VALUE_SELECT").replace("?", "'" + specimen_no + "'");
- ResultSet rs = this.getDao("testDao").ExceuteQueryForResultSet(sqlOne, new Object[]{specimen_no});
- JSONObject arrayjo = resultSetToJsonArry(rs, specimen_no, create_name);
- array.add(arrayjo);
- }
- if (array.size() <= 0) {
- cro.setResult("未查询到试样检测值!");
- return cro;
- }
- Object[] values = new Object[1];
- tar = array.toJSONString();
- values[0] = tar;
- try {
- ret = webServiceAxisCase(urlStr,
- "http://dao.hnshituo.com/", "SetPHYResult", values);
- System.out.println("发送试样检测值返回数据---" + ret);
- JSONObject rtjo = JSONObject.parseObject(ret);
- if (rtjo.get("code") == null || Integer.parseInt(rtjo.get("code").toString()) != 200) {
- System.out.println("发送试样检测值失败!json:" + tar);
- cro.setResult(rtjo.get("message"));
- } else {
- //修改发送状态
- for (String specimen_no : specimen_noList) {
- ComCallProc comCallProc = new ComCallProc();
- ArrayList send_flag_list = new ArrayList();
- send_flag_list.add("JHY02.UPDATE_SEND_FLAG");
- send_flag_list.add(specimen_no);
- ComSave comSave = new ComSave();
- comSave.doSimpleSave("testDao",send_flag_list);
- }
- cro.setResult("200");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cro;
- }
- /**
- * 将resultset 转为json数组
- *
- * @param rs
- * @return
- * @throws SQLException
- * @throws JSONException
- */
- public static JSONObject resultSetToJsonArry(ResultSet rs, String specimen_no, String create_name) throws SQLException, JSONException {
- ResultSetMetaData metaData = rs.getMetaData();
- int columnCount = metaData.getColumnCount();
- JSONObject jo = new JSONObject();
- JSONObject arrayjo = new JSONObject();
- JSONArray ja = new JSONArray();
- while (rs.next()) {
- JSONObject jsonObj = new JSONObject();
- for (int i = 1; i <= columnCount; i++) {
- String columnName = metaData.getColumnLabel(i);
- String value = rs.getString(columnName);
- jsonObj.put(columnName, value);
- }
- jsonObj.put("CREATE_NAME", create_name);
- ja.add(jsonObj);
- }
- arrayjo.put("PHY", ja);
- arrayjo.put("SPECIMEN_NO", specimen_no);
- return arrayjo;
- // return array1;
- }
- /**
- * 调用webservice接口
- * url:调用路径
- * TargetSpaceName:命名空间名,可在浏览器输入接口地址查看
- * serviceName:调用方法名
- * keys Object[] 对象数组类型:方法参数名
- * values Object[] 对象数组类型:参数值
- */
- public static String webServiceAxisCase(String url, String TargetSpaceName, String serviceName,
- Object[] values) throws Exception {
- if (values.length != 1)
- throw new IllegalArgumentException("接口方法参数与参数值不匹配!");
- String result = "";
- try {
- String endpoint = url;
- //直接引用远程的wsdl文件
- Service service = new Service();
- Call call = (Call) service.createCall();
- call.setTargetEndpointAddress(new URL(endpoint));
- //call.setOperationName(serviceName);//调用的方法名 当这种调用不到的时候,可以使用下面的,加入命名空间名
- call.setOperationName(new QName(TargetSpaceName, serviceName));// 调用的方法名 加入命名空间名
- for (int i = 0; i < values.length; i++) {
- //String key = (String) keys[i]; //方法参数
- Object value = values[i]; //参数值
- if (value == null) {
- call.addParameter("arg" + i, XMLType.XSD_STRING, ParameterMode.IN);
- } else if (value instanceof String) {
- call.addParameter("arg" + i, XMLType.XSD_STRING, ParameterMode.IN);
- } else if (value instanceof Integer) {
- call.addParameter("arg" + i, XMLType.XSD_INTEGER, ParameterMode.IN);
- } else if (value instanceof Boolean) {
- call.addParameter("arg" + i, XMLType.XSD_BOOLEAN, ParameterMode.IN);
- }
- }
- call.setReturnType(XMLType.XSD_STRING);// 设置返回类型
- result = (String) call.invoke(values);
- // 给方法传递参数,并且调用方法
- } catch (Exception e) {
- System.err.println(e.toString());
- }
- return result;
- }
- }
|