4533a12bd3ca5e5ace4a3953c23bb68ccb8786b4.svn-base 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. package QCM.JHY01.JHY0103;
  2. import CoreFS.SA01.CoreIComponent;
  3. import CoreFS.SA06.CoreReturnObject;
  4. import QCM.COMMUNAL.QCM02.SqlJoint;
  5. import QCM.COMMUNAL.VO.QcmJudgeOperateLog;
  6. import QCM.JHY01.VO.LimsDeclare;
  7. import QCM.JHY01.VO.listItem;
  8. import com.alibaba.fastjson.JSON;
  9. import com.alibaba.fastjson.JSONArray;
  10. import com.alibaba.fastjson.JSONObject;
  11. import org.apache.commons.collections.CollectionUtils;
  12. import org.apache.commons.logging.Log;
  13. import org.apache.commons.logging.LogFactory;
  14. import org.apache.ibatis.session.SqlSession;
  15. import java.io.*;
  16. import java.net.HttpURLConnection;
  17. import java.net.URL;
  18. import java.sql.Connection;
  19. import java.sql.PreparedStatement;
  20. import java.sql.ResultSet;
  21. import java.sql.SQLException;
  22. import java.text.SimpleDateFormat;
  23. import java.util.*;
  24. /**
  25. * 第三方认证申请接口
  26. * @author freedom
  27. *
  28. */
  29. public class AddThirdInfo extends CoreIComponent{
  30. private static Log logger = LogFactory.getLog(AddThirdInfo.class);
  31. CoreReturnObject cro = new CoreReturnObject();
  32. SqlSession SqlSession =
  33. QCM.COMMUNAL.SqlSessionBuilder.openSqlSession();
  34. QCM.COMMUNAL.OrderSqMapper mapper = SqlSession.getMapper(QCM.COMMUNAL.OrderSqMapper.class);
  35. private String getMaxNum(String strDate) throws Exception {
  36. ResultSet rs=null;
  37. String count=null;
  38. Integer cnume = 0;
  39. StringBuffer sqlucomm = new StringBuffer();
  40. sqlucomm.append("SELECT max(to_number(substr(CERT_NO,-3))) CERT_NO FROM QCM_MAT_CERT_M WHERE CERT_NO like '"+strDate+"%'");
  41. try {
  42. rs=this.getDao("testDao").ExceuteQueryForResultSet(sqlucomm.toString());
  43. if (rs.next()) {
  44. count=rs.getString("CERT_NO");
  45. if (count==null || count.equals("")) {
  46. count="0";
  47. }
  48. cnume = Integer.parseInt(count);
  49. }
  50. cnume++;
  51. } catch (SQLException e) {
  52. e.printStackTrace();
  53. throw new Exception();
  54. }
  55. return strDate+String.format("%03d",cnume);
  56. }
  57. //第三方认证申请接口2
  58. public CoreReturnObject addList(ArrayList<String> cert_inst_code,ArrayList<String> cert_inst_name,ArrayList<String> memo, ArrayList<String> create_id,ArrayList<String> create_name,
  59. ArrayList<String> cert_no,ArrayList<String> cert_status,ArrayList<String> apply_org_no,ArrayList<String> apply_org_desc,ArrayList<String> dep_type_code,ArrayList<String> duty_id,ArrayList<String> instance_id,
  60. ArrayList<String> material_no,ArrayList<String> design_key,ArrayList<String> psc,ArrayList<String> prod_code,ArrayList<String> prod_name,ArrayList<String> steel_code,
  61. ArrayList<String> steel_name,ArrayList<String> std_code,ArrayList<String> std_name,ArrayList<String> delivery_state_code,ArrayList<String> delivery_state_desc,
  62. ArrayList<String> delivery_date,ArrayList<String> cut_type,ArrayList<String> heat_no,ArrayList<String> batch_no,
  63. ArrayList<String> inspection_lot,ArrayList<String> board_no,ArrayList<String> thick,ArrayList<String> width,ArrayList<String> length,ArrayList<String> mat_weight,
  64. ArrayList<String> pline_code,ArrayList<String> pline_name,String userId,String userName) {
  65. StringBuffer sqlucomm=null;
  66. StringBuffer sqlucomm2=null;
  67. CoreReturnObject cro = new CoreReturnObject();
  68. try {
  69. Date date = new Date();
  70. String strDate="SQ-"+(new SimpleDateFormat("yyMMdd")).format(date);
  71. String cret_no = getMaxNum(strDate);
  72. sqlucomm=new StringBuffer();
  73. sqlucomm.append("INSERT " +
  74. "INTO QCM_MAT_CERT_M" +
  75. "(CERT_NO,CERT_INST_CODE,CERT_INST_NAME,CERT_STATUS,MEMO,CREATE_ID,CREATE_NAME,CREATE_TIME,SEND_FLAG) "+
  76. "VALUES('"+cret_no+"',?,?,'00',?,?,?,sysdate,'0') ");
  77. Object[] obj = new Object[]{cert_inst_code.get(0),cert_inst_name.get(0),memo.get(0),userId,userName};
  78. this.getDao("testDao").ExcuteNonQuery(sqlucomm.toString(),obj);
  79. for (int i = 0; i < cert_inst_code.size(); i++) {
  80. sqlucomm2=new StringBuffer();
  81. sqlucomm2.append("INSERT INTO QCM_MAT_CERT_D (CERT_NO,MATERIAL_NO,DESIGN_KEY,");
  82. sqlucomm2.append("PSC,PROD_CODE,PROD_NAME,STEEL_CODE,STEEL_NAME,STD_CODE,STD_NAME,");
  83. sqlucomm2.append("DELIVERY_STATE_CODE,DELIVERY_STATE_DESC,DELIVERY_DATE,CUT_TYPE,");
  84. sqlucomm2.append("HEAT_NO,BATCH_NO,INSPECTION_LOT,BOARD_NO,THICK,WIDTH,LENGTH,MAT_WEIGHT,PLINE_CODE,PLINE_NAME) VALUES ('");
  85. sqlucomm2.append(cret_no+"',?,?,");
  86. sqlucomm2.append("?,?,?,?,?,?,?, ?,?,?,?, ?,?,?,?,?,?,?,?,?,?)");
  87. Object[] obj2 = new Object[]{material_no.get(i),design_key.get(i),psc.get(i),prod_code.get(i),prod_name.get(i),steel_code.get(i),steel_name.get(i),std_code.get(i),std_name.get(i),
  88. delivery_state_code.get(i),delivery_state_desc.get(i),delivery_date.get(i),cut_type.get(i),
  89. heat_no.get(i),batch_no.get(i),inspection_lot.get(i),board_no.get(i),thick.get(i),width.get(i),length.get(i),mat_weight.get(i),
  90. pline_code.get(i),pline_name.get(i)};
  91. this.getDao("testDao").ExcuteNonQuery(sqlucomm2.toString(),obj2);
  92. }
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. System.out.println(e.getMessage());
  96. cro.setV_errCode(-1);
  97. cro.setV_errMsg("认证申报失败!"+e.getMessage());
  98. return cro;
  99. }
  100. cro.setV_errCode(1);
  101. cro.setV_errMsg("认证申报成功");
  102. return cro;
  103. }
  104. /**
  105. * 第三方认证申请接口2
  106. */
  107. public CoreReturnObject addList2(String jsonArray,String userId,String userName) {
  108. StringBuffer sqlucomm=null;
  109. StringBuffer sqlucomm2=null;
  110. CoreReturnObject cro = new CoreReturnObject();
  111. PreparedStatement ps = null;
  112. PreparedStatement ps2 = null;
  113. Connection cn = this.getDao("testDao").getConnection();
  114. String certInstCode = "";
  115. try {
  116. TreeSet<String> treeSet = new TreeSet<String>();
  117. JSONArray tarArr=JSON.parseArray(jsonArray);
  118. if (tarArr.size()== 0) {
  119. cro.setV_errCode(-1);
  120. cro.setV_errMsg("请勾选申请数据!");
  121. return cro;
  122. }
  123. for (Object list : tarArr) {
  124. JSONObject map = (JSONObject) list;
  125. // 获取认证机构代码
  126. certInstCode = map.getString("CERT_INST_CODE");
  127. treeSet.add(certInstCode);
  128. }
  129. if (treeSet.size() != 1) {
  130. cro.setV_errCode(-1);
  131. cro.setV_errMsg("请勾选同一个认证机构!!!");
  132. return cro;
  133. }
  134. Date date = new Date();
  135. String strDate="SQ-"+(new SimpleDateFormat("yyMMdd")).format(date);
  136. String cret_no = getMaxNum(strDate);
  137. sqlucomm=new StringBuffer();
  138. sqlucomm.append("INSERT " +
  139. "INTO QCM_MAT_CERT_M" +
  140. "(CERT_NO,CERT_INST_CODE,CERT_INST_NAME,CERT_STATUS,MEMO,CREATE_ID,CREATE_NAME,CREATE_TIME,SEND_FLAG) "+
  141. "VALUES('"+cret_no+"',?,?,'50',?,'"+userId+"','"+userName+"',sysdate,'0') ");
  142. ps = cn.prepareStatement(sqlucomm.toString());
  143. for (int i = 0; i < tarArr.size(); i++) {
  144. JSONObject jsonObj = tarArr.getJSONObject(i);
  145. FillPhyItem(ps, jsonObj);
  146. /*ps.addBatch();*/
  147. ps.execute();
  148. break;
  149. }
  150. sqlucomm2=new StringBuffer();
  151. sqlucomm2.append(" INSERT INTO QCM_MAT_CERT_D (CERT_NO,MATERIAL_NO,DESIGN_KEY,");
  152. sqlucomm2.append("PSC,PROD_CODE,PROD_NAME,STEEL_CODE,STEEL_NAME,STD_CODE,STD_NAME,");
  153. sqlucomm2.append("DELIVERY_STATE_CODE,DELIVERY_STATE_DESC,DELIVERY_DATE,CUT_TYPE,");
  154. sqlucomm2.append("HEAT_NO,BATCH_NO,INSPECTION_LOT,BOARD_NO,THICK,WIDTH,LENGTH,MAT_WEIGHT,PLINE_CODE,PLINE_NAME, ");
  155. sqlucomm2.append(" APPROACH,INCEPTCORPCODE,BUYERCODE,CONTRACT_NO,PSC_DESC,VESSEL,CREATE_NAME,CREATE_TIME,MAT_WEIGHT2,VALIDFLAG)");
  156. sqlucomm2.append("VALUES ('");
  157. sqlucomm2.append(cret_no+"',?,?,");
  158. sqlucomm2.append("?,?,?,?,?,?,?, ?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'"+userName+"',sysdate,?,?)");
  159. ps2 = cn.prepareStatement(sqlucomm2.toString());
  160. for (int i = 0; i < tarArr.size(); i++) {
  161. JSONObject jsonObj = tarArr.getJSONObject(i);
  162. //查询有没有当前子板的数据
  163. String sqlmno="SELECT * FROM QCM_MAT_CERT_D T WHERE T.MATERIAL_NO = '"+jsonObj.getString("MATERIAL_NO")+"' "
  164. + " and t.STEEL_CODE = '"+jsonObj.getString("STEEL_CODE")+"' ";
  165. List<HashMap> hmList = mapper.query(sqlmno);
  166. if(hmList!=null && hmList.size()>=1){
  167. String sqlupdate="update QCM_MAT_CERT_D t set t.VALIDFLAG = '0' where t.MATERIAL_NO = '"+jsonObj.getString("MATERIAL_NO")+"'"
  168. + " and t.STEEL_CODE = '"+jsonObj.getString("STEEL_CODE")+"' ";
  169. this.getDao("testDao").ExcuteNonQuery(sqlupdate.toString());
  170. }
  171. //查询订单下的牌号
  172. //查询有没有当前子板的数据
  173. String sqlmno2="SELECT * FROM QCM_MAT_CERT_D T WHERE T.MATERIAL_NO = '"+jsonObj.getString("MATERIAL_NO")+"' "
  174. +" and t.STEEL_CODE NOT IN ( select t.STEEL_CODE from QCM_ORD_DESIGN_SAMPLE_M t "
  175. +" where t.design_key = '"+jsonObj.getString("DESIGN_KEY")+"' group by t.steel_code) and t.VALIDFLAG is null ";
  176. List<HashMap> hmList2 = mapper.query(sqlmno2);
  177. if(hmList2!=null && hmList2.size()>=1){
  178. for (int z = 0; z < hmList2.size(); z++) {
  179. String sqlupdate="update QCM_MAT_CERT_D t set t.VALIDFLAG = '0' where t.MATERIAL_NO = '"+hmList2.get(z).get("MATERIAL_NO")+"'"
  180. + " and t.STEEL_CODE = '"+hmList2.get(z).get("STEEL_CODE")+"' ";
  181. this.getDao("testDao").ExcuteNonQuery(sqlupdate.toString());
  182. }
  183. }
  184. //查询订单下的牌号
  185. String sqlmno3=" select t.STEEL_CODE from QCM_ORD_DESIGN_SAMPLE_M t "
  186. +" where t.design_key = '"+jsonObj.getString("DESIGN_KEY")+"' AND t.STEEL_CODE = '"+jsonObj.getString("STEEL_CODE")+"' ";
  187. List<HashMap> hmList3 = mapper.query(sqlmno3);
  188. if(hmList3!=null && hmList3.size()>=1){
  189. jsonObj.put("VALIDFLAG", "");
  190. }else{
  191. jsonObj.put("VALIDFLAG", "0");
  192. }
  193. FillPhyItem2(ps2, jsonObj);
  194. /* ps2.addBatch();*/
  195. ps2.execute();
  196. /* String sql ="INSERT INTO QCM_MASS_PRODUCE (MATERIAL_NO) VALUES('"+jsonObj.getString("MATERIAL_NO")+"') ";
  197. this.getDao("testDao").ExcuteNonQuery(sql.toString());*/
  198. }
  199. /*ps.executeBatch();
  200. ps.clearBatch();*/
  201. ps.close();
  202. /* ps2.executeBatch();
  203. ps2.clearBatch();*/
  204. ps2.close();
  205. cn.commit();
  206. List<LimsDeclare> limsD= new ArrayList<LimsDeclare>();
  207. //调用lims接口
  208. for (Object list : tarArr) {
  209. String num="0";
  210. JSONObject map = (JSONObject) list;
  211. String DESIGN_KEY = map.getString("DESIGN_KEY");
  212. String BATCH_NO = map.getString("BATCH_NO");
  213. String STEEL_NAME = map.getString("STEEL_NAME");//产品牌号
  214. String CERT_INST_CODE = map.getString("CERT_INST_CODE");//认证机构代码
  215. String newItem=DESIGN_KEY+"-"+BATCH_NO;
  216. newItem=newItem+"-"+(STEEL_NAME!=null?STEEL_NAME:"null");
  217. newItem=newItem+"-"+(CERT_INST_CODE!=null?CERT_INST_CODE:"null");
  218. for (int j = 0; j < limsD.size(); j++) {
  219. LimsDeclare lis = limsD.get(j);
  220. String designKey = (String) lis.getDESIGN_KEY();
  221. String batchNo = (String) lis.getBATCH_NO();
  222. String steelName = (String) lis.getSTEEL_NAME();
  223. String certInst = (String) lis.getCERT_INST_CODE();
  224. String newItem2=designKey+"-"+batchNo;
  225. newItem2=newItem2+"-"+(steelName!=null?steelName:"null");
  226. newItem2=newItem2+"-"+(certInst!=null?certInst:"null");
  227. //判断这条数据有没有给lims发送
  228. if(newItem.equals(newItem2)){
  229. num = "1";//1 代表已经给Lims那边发送过
  230. break;
  231. }
  232. }
  233. if(num.equals("0")){
  234. LimsDeclare lde = new LimsDeclare();
  235. lde.setDESIGN_KEY(DESIGN_KEY);
  236. lde.setBATCH_NO(BATCH_NO);
  237. lde.setSTEEL_NAME(STEEL_NAME);
  238. lde.setCERT_INST_CODE(CERT_INST_CODE);
  239. limsD.add(lde);
  240. JSONArray tar= new JSONArray();
  241. tar.add(map);//json 转 Array
  242. String tara=tar.toString();
  243. //一条一条传给Lims
  244. String limsRet = httpUrlPostLims(tara);//调用url
  245. }
  246. }
  247. for (Object list : tarArr) {
  248. JSONObject map = (JSONObject) list;
  249. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  250. qjog.setOperate_name(userName);
  251. qjog.setBatchno(map.get("BATCH_NO") == null ?"":map.get("BATCH_NO").toString());
  252. if(certInstCode.equals("IC011") || certInstCode.equals("IC012") || certInstCode.equals("IC013") || certInstCode.equals("IC014") ||
  253. certInstCode.equals("IC015") || certInstCode.equals("IC016") || certInstCode.equals("IC017") || certInstCode.equals("IC018") ||
  254. certInstCode.equals("IC019") || certInstCode.equals("IC020") || certInstCode.equals("IC021") || certInstCode.equals("IC022") ||
  255. certInstCode.equals("IC023") || certInstCode.equals("IC024") || certInstCode.equals("IC026") ){
  256. qjog.setOperate_type("第三方申报");
  257. }else{
  258. qjog.setOperate_type("船检申报");
  259. }
  260. qjog.setParams(map.get("MATERIAL_NO") == null ?"":map.get("MATERIAL_NO").toString());
  261. if(map.get("PLINE_CODE").toString().contains("ZB1")){
  262. qjog.setProd_line("ZB1");
  263. }else if(map.get("PLINE_CODE").toString().contains("HB1")){
  264. qjog.setProd_line("HB1");
  265. }
  266. mapper.insertQcmJudgeOperateLog(qjog);
  267. }
  268. SqlSession.commit();
  269. cro.setV_errCode(0);
  270. cro.setV_errMsg("操作成功!");
  271. } catch (Exception e) {
  272. // TODO Auto-generated catch block
  273. cro.setV_errCode(-1);
  274. cro.setV_errMsg("认证失败!"+e.getMessage());
  275. e.printStackTrace();
  276. SqlSession.rollback();
  277. }finally {
  278. SqlSession.close();
  279. }
  280. return cro;
  281. }
  282. void FillPhyItem(PreparedStatement pSta1 , JSONObject qlty) throws Exception{
  283. pSta1.setString(1,qlty.getString("CERT_INST_CODE"));
  284. pSta1.setString(2, qlty.getString("CERT_INST_NAME"));
  285. pSta1.setString(3, qlty.getString("MEMO"));
  286. }
  287. void FillPhyItem2(PreparedStatement pSta1 , JSONObject qlty) throws Exception{
  288. pSta1.setString(1,qlty.getString("MATERIAL_NO"));
  289. pSta1.setString(2, qlty.getString("DESIGN_KEY"));
  290. pSta1.setString(3, qlty.getString("PSC"));
  291. pSta1.setString(4, qlty.getString("PROD_CODE"));
  292. pSta1.setString(5, qlty.getString("PROD_NAME"));
  293. pSta1.setString(6, qlty.getString("STEEL_CODE"));
  294. pSta1.setString(7, qlty.getString("STEEL_NAME"));
  295. pSta1.setString(8, qlty.getString("STD_CODE"));
  296. pSta1.setString(9, qlty.getString("STD_NAME"));
  297. pSta1.setString(10, qlty.getString("DELIVERY_STATE_CODE"));
  298. pSta1.setString(11, qlty.getString("DELIVERY_STATE_DESC"));
  299. pSta1.setString(12, qlty.getString("DELIVERY_DATE"));
  300. pSta1.setString(13, qlty.getString("CUT_TYPE"));
  301. pSta1.setString(14, qlty.getString("HEAT_NO"));
  302. pSta1.setString(15, qlty.getString("BATCH_NO"));
  303. pSta1.setString(16, qlty.getString("INSPECTION_LOT"));
  304. pSta1.setString(17, qlty.getString("BOARD_NO"));
  305. pSta1.setString(18, qlty.getString("THICK"));
  306. pSta1.setString(19, qlty.getString("WIDTH"));
  307. pSta1.setString(20, qlty.getString("LENGTH"));
  308. pSta1.setString(21, qlty.getString("MAT_WEIGHT"));
  309. pSta1.setString(22, qlty.getString("PLINE_CODE"));
  310. pSta1.setString(23, qlty.getString("PLINE_NAME"));
  311. pSta1.setString(24, qlty.getString("APPROACH"));
  312. pSta1.setString(25, qlty.getString("INCEPTCORPCODE"));
  313. pSta1.setString(26, qlty.getString("BUYERCODE"));
  314. pSta1.setString(27, qlty.getString("CONTRACTNO"));
  315. pSta1.setString(28, qlty.getString("PSC_DESC"));
  316. pSta1.setString(29, qlty.getString("VESSEL"));
  317. pSta1.setString(30, qlty.getString("MAT_WEIGHT"));
  318. pSta1.setString(31, qlty.getString("VALIDFLAG"));
  319. }
  320. /**
  321. * 发送Http Post请求 第三方认证申报 调用lims接口
  322. * @throws Exception */
  323. public String httpUrlPostLims(String data) throws Exception {
  324. HttpURLConnection connection = null;
  325. PrintWriter pw = null;
  326. BufferedReader reader = null;
  327. String line = "";
  328. StringBuilder result = new StringBuilder();
  329. try {
  330. String methodUrl ="http://172.16.0.169:82/Limsinterface/http/Boatorder";
  331. URL url = new URL(methodUrl);
  332. connection = (HttpURLConnection)url.openConnection();// 根据URL生成HttpURLConnection
  333. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  334. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  335. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  336. connection.setUseCaches(false);// post请求不能使用缓存设为false
  337. connection.setConnectTimeout(10000);// 连接主机的超时时间
  338. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  339. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  340. connection.setRequestProperty("accept", "*/*");
  341. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  342. connection.setRequestProperty("charset", "utf-8");//utf-8 GBK
  343. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  344. connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  345. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  346. OutputStream outputstream = connection.getOutputStream();
  347. String jsonStr = "data="+data;
  348. outputstream.write(jsonStr.getBytes("UTF-8"));
  349. outputstream.flush();
  350. outputstream.close();
  351. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  352. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  353. // 循环读取流
  354. while (null != (line = reader.readLine())) {
  355. result.append(line);
  356. }
  357. reader.close();
  358. }
  359. } catch (IOException e) {
  360. e.printStackTrace();
  361. // throw new Exception("发送LIMS系统失败,具体原因为["+e.getMessage()+"]");
  362. } finally {
  363. connection.disconnect();
  364. }
  365. return result.toString();
  366. }
  367. /**
  368. * 发送Http Post请求 调用一体化接口
  369. *
  370. * @throws Exception
  371. */
  372. public String httpUrlPostYTH(String data, String methodUrl) throws Exception {
  373. HttpURLConnection connection = null;
  374. PrintWriter pw = null;
  375. BufferedReader reader = null;
  376. String line = "";
  377. StringBuilder result = new StringBuilder();
  378. try {
  379. URL url = new URL(methodUrl);
  380. connection = (HttpURLConnection) url.openConnection();// 根据URL生成HttpURLConnection
  381. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  382. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  383. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  384. connection.setUseCaches(false);// post请求不能使用缓存设为false
  385. connection.setConnectTimeout(10000);// 连接主机的超时时间
  386. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  387. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  388. connection.setRequestProperty("accept", "*/*");
  389. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  390. connection.setRequestProperty("charset", "utf-8");//utf-8 GBK
  391. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  392. connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  393. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  394. OutputStream outputstream = connection.getOutputStream();
  395. String jsonStr = "data=" + data;
  396. outputstream.write(jsonStr.getBytes("UTF-8"));
  397. outputstream.flush();
  398. outputstream.close();
  399. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  400. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  401. // 循环读取流
  402. while (null != (line = reader.readLine())) {
  403. result.append(line);
  404. }
  405. reader.close();
  406. }
  407. } catch (IOException e) {
  408. e.printStackTrace();
  409. logger.error("调用一体化接口失败,url:" + methodUrl + ",json数据:" + data + ",具体原因为[" + e.getMessage() + "]");
  410. } finally {
  411. connection.disconnect();
  412. }
  413. return result.toString();
  414. }
  415. /**
  416. * 调用一体化接口 船板质保书开具清单接口
  417. *
  418. * @throws Exception
  419. */
  420. public void sendYTHWarrantyDetail() throws Exception {
  421. SqlSession SqlSession = QCM.COMMUNAL.SqlSessionBuilder.openSqlSession();
  422. QCM.COMMUNAL.OrderSqMapper mapper = SqlSession.getMapper(QCM.COMMUNAL.OrderSqMapper.class);
  423. //综合判定合格,第三方申报未发送一体化的数据
  424. try {
  425. String url = "http://172.16.4.136:14008/tcpdi/getMESTestRlt?queueid=setMesControlNo";
  426. /*String result = httpUrlPostYTH("", url);
  427. if (!SqlJoint.IsNullOrSpace(result)) {
  428. JSONObject jo = JSONObject.parseObject(result);
  429. if (jo != null && jo.get("status") != null && jo.get("status").toString().equals("200")) {
  430. } else {
  431. logger.error("调用一体化船板质保书开具清单接口失败具体原因为[" + result + "]");
  432. }
  433. }*/
  434. String sql = "select t1.material_no, t2.cert_inst_code, '' control_no\n" +
  435. " from qcm_mat_cert_d t1, qcm_mat_cert_m t2, qcm_judge_coil_result t3\n" +
  436. " where t1.cert_no = t2.cert_no(+)\n" +
  437. " and t1.material_no = t3.coil_no(+)\n" +
  438. " and t1.send_flag_yth = '1'\n" +
  439. " and t3.judgeresult = '1'\n" +
  440. " and t1.material_no is not null\n" +
  441. " and t2.cert_inst_code is not null\n" +
  442. "union\n" +
  443. "select t1.material_no, t2.cert_inst_code, '' control_no\n" +
  444. " from qcm_mat_cert_d t1, qcm_mat_cert_m t2, zj_result_all@xgcx t3\n" +
  445. " where t1.cert_no = t2.cert_no(+)\n" +
  446. " and t1.material_no = t3.billetid(+)\n" +
  447. " and t1.send_flag_yth = '1'\n" +
  448. " and t3.judgeresult = '1'\n" +
  449. " and t1.material_no is not null\n" +
  450. " and t2.cert_inst_code is not null";
  451. List<HashMap> hmList = mapper.query(sql);
  452. if (CollectionUtils.isNotEmpty(hmList)) {
  453. JSONArray ttmaps = new JSONArray();
  454. for (HashMap hashMap : hmList) {
  455. JSONObject jsobj1 = new JSONObject();
  456. jsobj1.put("PROD_NO", hashMap.get("MATERIAL_NO"));
  457. jsobj1.put("ORG_CODE", hashMap.get("CERT_INST_CODE"));
  458. jsobj1.put("CONTROL_NO", "");
  459. ttmaps.add(jsobj1);
  460. }
  461. String date = JSON.toJSONString(ttmaps);
  462. String result = httpUrlPostYTH(date, url);
  463. if (!SqlJoint.IsNullOrSpace(result)) {
  464. JSONObject jo = JSONObject.parseObject(result);
  465. if (jo != null && jo.get("status") != null && jo.get("status").toString().equals("200")) {
  466. //修改发送标识
  467. for (HashMap hashMap : hmList) {
  468. String sqlupdate = "update qcm_mat_cert_d t set t.send_flag_yth = '0' where t.material_no = '" + hashMap.get("MATERIAL_NO").toString() + "'";
  469. cro = this.getDao("testDao").ExcuteNonQuery(sqlupdate.toString());
  470. }
  471. } else {
  472. logger.error("调用一体化船板质保书开具清单接口失败具体原因为[" + result + "]");
  473. }
  474. }
  475. }
  476. } catch (Exception ex) {
  477. ex.printStackTrace();
  478. logger.error("调用一体化船板质保书开具清单接口失败具体原因为[" + ex.getMessage() + "]");
  479. }
  480. SqlSession.close();
  481. }
  482. /**
  483. * 调用一体化接口 船板质保书取消接口
  484. *
  485. * @throws Exception
  486. */
  487. public void sendCancelYTHWarrantyDetail() throws Exception {
  488. SqlSession SqlSession = QCM.COMMUNAL.SqlSessionBuilder.openSqlSession();
  489. QCM.COMMUNAL.OrderSqMapper mapper = SqlSession.getMapper(QCM.COMMUNAL.OrderSqMapper.class);
  490. //综合判定未判,第三方申报已发送一体化的数据
  491. try {
  492. String url = "http://172.16.4.136:14008/slpdi/csCancel";
  493. /*String result = httpUrlPostYTH("", url);
  494. if (!SqlJoint.IsNullOrSpace(result)) {
  495. JSONObject jo = JSONObject.parseObject(result);
  496. if (jo != null && jo.get("status") != null && jo.get("status").toString().equals("200")) {
  497. } else {
  498. logger.error("调用一体化船板质保书取消接口失败具体原因为[" + result + "]");
  499. }
  500. }*/
  501. String sql = "select t1.material_no, t2.cert_inst_code, '' control_no\n" +
  502. " from qcm_mat_cert_d t1, qcm_mat_cert_m t2, qcm_judge_coil_result t3\n" +
  503. " where t1.cert_no = t2.cert_no(+)\n" +
  504. " and t1.material_no = t3.coil_no(+)\n" +
  505. " and t1.send_flag_yth = '0'\n" +
  506. " and t3.judgeresult = '0'\n" +
  507. " and t1.material_no is not null\n" +
  508. " and t1.create_time > sysdate - 10 \n" +
  509. "union\n" +
  510. "select t1.material_no, t2.cert_inst_code, '' control_no\n" +
  511. " from qcm_mat_cert_d t1, qcm_mat_cert_m t2, zj_result_all@xgcx t3\n" +
  512. " where t1.cert_no = t2.cert_no(+)\n" +
  513. " and t1.material_no = t3.billetid(+)\n" +
  514. " and t1.send_flag_yth = '0'\n" +
  515. " and t3.judgeresult = '0'\n" +
  516. " and t1.material_no is not null\n" +
  517. " and t1.create_time > sysdate - 10 ";
  518. List<HashMap> hmList = mapper.query(sql);
  519. if (CollectionUtils.isNotEmpty(hmList)) {
  520. JSONArray ttmaps = new JSONArray();
  521. for (HashMap hashMap : hmList) {
  522. JSONObject jsobj1 = new JSONObject();
  523. jsobj1.put("PROD_NO", hashMap.get("MATERIAL_NO").toString());
  524. ttmaps.add(jsobj1);
  525. }
  526. String date = JSON.toJSONString(ttmaps);
  527. String result = httpUrlPostYTH(date, url);
  528. if (!SqlJoint.IsNullOrSpace(result)) {
  529. JSONObject jo = JSONObject.parseObject(result);
  530. if (jo != null && jo.get("status") != null && jo.get("status").toString().equals("200")) {
  531. //修改发送标识
  532. for (HashMap hashMap : hmList) {
  533. String sqlupdate = "update qcm_mat_cert_d t set t.send_flag_yth = '1' where t.material_no = '" + hashMap.get("MATERIAL_NO").toString() + "'";
  534. cro = this.getDao("testDao").ExcuteNonQuery(sqlupdate.toString());
  535. }
  536. } else {
  537. logger.error("调用一体化船板质保书开具清单接口失败具体原因为[" + result + "]");
  538. }
  539. }
  540. }
  541. } catch (Exception ex) {
  542. ex.printStackTrace();
  543. logger.error("调用一体化船板质保书开具清单接口失败具体原因为[" + ex.getMessage() + "]");
  544. }
  545. SqlSession.close();
  546. }
  547. //第三方见证委托申报
  548. public CoreReturnObject addMatWitneD(String jsonstr,String userId,String userName) {
  549. try {
  550. Connection cn = this.getDao("testDao").getConnection();
  551. PreparedStatement ps = null;
  552. String[] ja=jsonstr.split(",");
  553. String msInfo="";
  554. if (ja!=null && ja.length>0) {
  555. for (int i = 0; i < ja.length; i++) {
  556. String sp = ja[i];
  557. if ("".equals(msInfo)) {
  558. msInfo="'"+sp+"'";
  559. }else{
  560. msInfo=msInfo+"'"+sp+"'";
  561. }
  562. if (i !=ja.length-1) {
  563. msInfo=msInfo+",";
  564. }
  565. }
  566. }
  567. String sql="select r.design_key,r.steel_code,r.steel_name,r.thick,t.heat_no,t.batch_no,t.material_no,t.smp_no,t.specimen_no, "
  568. +" t.inspection_lot,t.freq_code,t.freq_name,t.smp_type_code,t.smp_type_name,t.smp_location_code,t.smp_location, "
  569. +" t.board_no,t.pline_code,t.pline_name,t.process_nos,t.phy_item,m.smp_catg,m.cert_inst_code,m.cert_inst_name, "
  570. +" r.psc,r.psc_desc,r.delivery_state_code,r.delivery_state_desc,r.width,r.length,r.msc_pline,r.process_code,r.prod_code, "
  571. +" r.prod_name,r.std_code,r.std_name,r.three_memo,t.memo,t.improve_memo "
  572. +" from qcm_jhy_sample_consign_d t, "
  573. +" qcm_jhy_sample_consign_m m, "
  574. +" qcm_jhy_sample_r_ord r "
  575. +" where t.smp_no = m.smp_no "
  576. +" and t.smp_no = r.smp_no "
  577. +" and m.smp_no = r.smp_no "
  578. +" and t.specimen_no in ("+msInfo+") ";
  579. List<HashMap> lists=mapper.query(sql.toString());
  580. if (lists==null || lists.size()<1) {
  581. cro.setV_errCode(-1);
  582. cro.setV_errMsg("待申报的见证委托数据已经不存在,请核实数据!");
  583. return cro;
  584. }
  585. UUID uuid = UUID.randomUUID();
  586. StringBuffer sqlucomm=new StringBuffer();
  587. sqlucomm.append("insert into qcm_mat_witne_d "+
  588. "(design_key, steel_code, steel_name, thick, heat_no, batch_no, material_no, smp_no, specimen_no, inspection_lot, freq_code, freq_name,"+
  589. " smp_type_code, smp_type_name, smp_location_code, smp_location, board_no, pline_code, pline_name, process_nos, phy_item, smp_catg,"+
  590. " cert_inst_code, cert_inst_name, psc, psc_desc, delivery_state_code, delivery_state_desc, width, length, msc_pline, process_code,"+
  591. " prod_code, prod_name, std_code, std_name, three_memo, memo, improve_memo, create_id, create_name,GUID)"+
  592. " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "+
  593. " ?,'"+userId+"', '"+userName+"','"+uuid+"') ");
  594. ps = cn.prepareStatement(sqlucomm.toString());
  595. for (int i = 0; i < lists.size(); i++) {
  596. HashMap obj=lists.get(i);
  597. matWitneItem(ps, obj);
  598. ps.execute();
  599. String sqlupdate="update QCM_JHY_SAMPLE_CONSIGN_D t set t.mat_witne = '1' where t.specimen_no = '"+obj.get("SPECIMEN_NO").toString()+"'";
  600. this.getDao("testDao").ExcuteNonQuery(sqlupdate.toString());
  601. }
  602. ps.close();
  603. cn.commit();
  604. for (int i = 0; i < lists.size(); i++) {
  605. HashMap obj=lists.get(i);
  606. JSONObject map = JSONObject.parseObject(JSON.toJSONString(obj));
  607. JSONArray tar= new JSONArray();
  608. tar.add(map);//json 转 Array
  609. String tara=tar.toString();
  610. String limsRet = httpUrlPostLims(tara);//调用url
  611. }
  612. for (int i = 0; i < lists.size(); i++) {
  613. HashMap obj=lists.get(i);
  614. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  615. qjog.setOperate_name(userName);
  616. qjog.setBatchno(obj.get("BATCH_NO").toString() == null ?"":obj.get("BATCH_NO").toString());
  617. qjog.setOperate_type("第三方申报");
  618. qjog.setParams(obj.get("MATERIAL_NO").toString() == null ?"":obj.get("MATERIAL_NO").toString());
  619. qjog.setProd_line(obj.get("PLINE_CODE").toString());
  620. qjog.setMemo(obj.get("SPECIMEN_NO").toString());
  621. mapper.insertQcmJudgeOperateLog(qjog);
  622. }
  623. SqlSession.commit();
  624. } catch (Exception e) {
  625. e.printStackTrace();
  626. SqlSession.rollback();
  627. cro.setV_errCode(-1);
  628. cro.setV_errMsg("申报见证委托失败!"+e.getMessage());
  629. return cro;
  630. }finally {
  631. SqlSession.close();
  632. }
  633. return cro;
  634. }
  635. void matWitneItem(PreparedStatement pSta1 , HashMap obj) throws Exception{
  636. pSta1.setString(1, (String)obj.get("DESIGN_KEY"));
  637. pSta1.setString(2, (String)obj.get("STEEL_CODE"));
  638. pSta1.setString(3, (String)obj.get("STEEL_NAME"));
  639. pSta1.setString(4, (String)obj.get("THICK"));
  640. pSta1.setString(5, (String)obj.get("HEAT_NO"));
  641. pSta1.setString(6, (String)obj.get("BATCH_NO"));
  642. pSta1.setString(7, (String)obj.get("MATERIAL_NO"));
  643. pSta1.setString(8, (String)obj.get("SMP_NO"));
  644. pSta1.setString(9, (String)obj.get("SPECIMEN_NO"));
  645. pSta1.setString(10, (String)obj.get("INSPECTION_LOT"));
  646. pSta1.setString(11, (String)obj.get("FREQ_CODE"));
  647. pSta1.setString(12, (String)obj.get("FREQ_NAME"));
  648. pSta1.setString(13, (String)obj.get("SMP_TYPE_CODE"));
  649. pSta1.setString(14, (String)obj.get("SMP_TYPE_NAME"));
  650. pSta1.setString(15, (String)obj.get("SMP_LOCATION_CODE"));
  651. pSta1.setString(16, (String)obj.get("SMP_LOCATION"));
  652. pSta1.setString(17, (String)obj.get("BOARD_NO"));
  653. pSta1.setString(18, (String)obj.get("PLINE_CODE"));
  654. pSta1.setString(19, (String)obj.get("PLINE_NAME"));
  655. pSta1.setString(20, (String)obj.get("PROCESS_NOS"));
  656. pSta1.setString(21, (String)obj.get("PHY_ITEM"));
  657. pSta1.setString(22, (String)obj.get("SMP_CATG"));
  658. pSta1.setString(23, (String)obj.get("CERT_INST_CODE"));
  659. pSta1.setString(24, (String)obj.get("CERT_INST_NAME"));
  660. pSta1.setString(25, (String)obj.get("PSC"));
  661. pSta1.setString(26, (String)obj.get("PSC_DESC"));
  662. pSta1.setString(27, (String)obj.get("DELIVERY_STATE_CODE"));
  663. pSta1.setString(28, (String)obj.get("DELIVERY_STATE_DESC"));
  664. pSta1.setString(29, (String)obj.get("WIDTH"));
  665. pSta1.setString(30, (String)obj.get("LENGTH"));
  666. pSta1.setString(31, (String)obj.get("MSC_PLINE"));
  667. pSta1.setString(32, (String)obj.get("PROCESS_CODE"));
  668. pSta1.setString(33, (String)obj.get("PROD_CODE"));
  669. pSta1.setString(34, (String)obj.get("PROD_NAME"));
  670. pSta1.setString(35, (String)obj.get("STD_CODE"));
  671. pSta1.setString(36, (String)obj.get("STD_NAME"));
  672. pSta1.setString(37, (String)obj.get("THREE_MEMO"));
  673. pSta1.setString(38, (String)obj.get("MEMO"));
  674. pSta1.setString(39, (String)obj.get("IMPROVE_MEMO"));
  675. }
  676. }