973e2b71917f594b805b4f0485dc454331a61d27.svn-base 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. package xin.glue.ui.G.G04;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.net.URL;
  5. import java.net.URLConnection;
  6. import java.sql.CallableStatement;
  7. import java.util.List;
  8. import java.util.Map;
  9. import org.apache.commons.lang.StringUtils;
  10. import com.posdata.glue.PosException;
  11. import com.posdata.glue.biz.activity.PosActivity;
  12. import com.posdata.glue.biz.constants.PosBizControlConstants;
  13. import com.posdata.glue.biz.control.PosBizControlIF;
  14. import com.posdata.glue.biz.control.PosBizProvider;
  15. import com.posdata.glue.component.PosConstants;
  16. import com.posdata.glue.context.PosContext;
  17. import com.posdata.glue.dao.vo.PosParameter;
  18. import com.posdata.glue.dao.vo.PosRow;
  19. import com.posdata.glue.dao.vo.PosRowSet;
  20. import com.posdata.glue.msg.PosMESMessageImpl;
  21. import com.posdata.glue.msg.PosMessage;
  22. public class XINComplusMove extends PosActivity {
  23. public String runActivity(PosContext context) {
  24. String[] rowStatus = (String[]) context.get("rowStatus");
  25. String[] CHK = (String[]) context.get("CHK"); //选择
  26. String[] SLAB_NO = (String[]) context.get("SLAB_NO"); //板坯号
  27. String[] YARD_ADDR = (String[]) context.get("YARD_ADDR"); //现在库位置
  28. String[] FROM_ADDR = (String[]) context.get("CUR_LOAD_LOC"); //现在库位置
  29. String[] TO_ADDR = (String[]) context.get("TO_YARD"); //目的位置
  30. String[] MILL_STAT = (String[]) context.get("MILL_SCH_STAT"); //钢号
  31. String[] CUR_PROG_CD = (String[]) context.get("CUR_PROG_CD"); //胚料进程
  32. String[] SLAB_STAT = (String[]) context.get("SLAB_STAT"); //胚料状态
  33. String[] MOVE_EMP_NM = (String[]) context.get("MOVE_EMP_NM"); //操作人
  34. YardHandle yardHandl = new YardHandle(getDao("mesdao"));
  35. for(int i=0;i< rowStatus.length;i++){
  36. if(!(CHK[i].equals("Y")))continue;
  37. if(MILL_STAT[i].equals("A7T")){
  38. context.put("MESSAGES", " 坯料已经装炉,不能再入库! ");
  39. return PosBizControlConstants.SUCCESS;
  40. }
  41. if(SLAB_STAT[i].equals("3")){
  42. context.put("MESSAGES", " 板坯状态已经结束! ");
  43. return PosBizControlConstants.SUCCESS;
  44. }
  45. if(SLAB_NO[i] == null||SLAB_NO[i].equals("")||TO_ADDR[i].equals("")||TO_ADDR[i] == null){
  46. context.put("MESSAGES", " 板坯号,地址不能为空 ");
  47. return PosBizControlConstants.SUCCESS;
  48. }
  49. if(TO_ADDR[i] == null||TO_ADDR[i].equals("")||TO_ADDR[i].length() > 8||TO_ADDR[i].equals("")){
  50. context.put("MESSAGES", " 垛位错误 ");
  51. return PosBizControlConstants.SUCCESS;
  52. }
  53. PosParameter param1 = new PosParameter();
  54. param1 = new PosParameter();
  55. param1.setWhereClauseParameter(0, SLAB_NO[i]);
  56. PosRowSet rowSet = getDao("mesdao").find("UIG040061_MOVEALBE_SLAB.select", param1);
  57. while(rowSet.hasNext()){
  58. PosRow row = rowSet.next();
  59. String slabStat = (String)row.getAttribute("SLAB_STAT");
  60. String missionClf = (String)row.getAttribute("MISSNO_CLF");
  61. String lstIngrCd = (String)row.getAttribute("LST_INGR_CD");
  62. String slabIngrGrd = (String)row.getAttribute("SLAB_INGR_DEC_GRD");
  63. String slabTotalGrd = (String)row.getAttribute("SLAB_TOT_DEC_GRD");
  64. String curProgCd = (String)row.getAttribute("CUR_PROG_CD");
  65. Object SLAB_OUT_TP = row.getAttribute("SLAB_OUT_TP"); //是否允许出库
  66. if(slabStat.equals("3")){
  67. context.put("MESSAGES", " 板坯状态已经结束! ");
  68. return PosBizControlConstants.SUCCESS;
  69. }
  70. //2013/3/11 MODIFY BY MGP
  71. // if(curProgCd.equals("RAB")){
  72. // context.put("MESSAGES", " 精整待机坯料! ");
  73. // return PosBizControlConstants.SUCCESS;
  74. // }
  75. if(!(missionClf == null)&&(missionClf.equals("3") || missionClf.equals("2"))){
  76. context.put("MESSAGES", " 加回,轧回,吊销坯不能在此入库! ");
  77. return PosBizControlConstants.SUCCESS;
  78. }
  79. if(lstIngrCd == null){
  80. context.put("MESSAGES", " 无成份实绩,不能入库! ");
  81. return PosBizControlConstants.SUCCESS;
  82. }
  83. System.out.println(TO_ADDR[i].substring(0,1));
  84. if((slabIngrGrd == null || (!slabIngrGrd.equals("1"))) && TO_ADDR[i].substring(0,1).equals("Z")){
  85. context.put("MESSAGES", " 成份等级不合格,不能入库! ");
  86. return PosBizControlConstants.SUCCESS;
  87. }
  88. if((StringUtils.isBlank(slabTotalGrd)) && TO_ADDR[i].substring(0,1).equals("Z")){
  89. context.put("MESSAGES", " 板坯未进行综合判定,不能入库! ");
  90. return PosBizControlConstants.SUCCESS;
  91. }
  92. //添加不允许出库限制
  93. if(null == SLAB_OUT_TP || StringUtils.isEmpty(SLAB_OUT_TP.toString())) {
  94. if("Z".equalsIgnoreCase(TO_ADDR[i].substring(0,1))){
  95. context.put("MESSAGES", " 坯料不允许出库,请联系质检!");
  96. return PosBizControlConstants.SUCCESS;
  97. }
  98. }
  99. }
  100. //获得垛位层数
  101. if(!yardHandl.chekStorelay(TO_ADDR[i])){
  102. context.put("MESSAGES", TO_ADDR[0] + " 垛位错误或则已经放满,不能超过16块! ");
  103. return PosBizControlConstants.SUCCESS;
  104. }
  105. String StoreLay = null;
  106. int lay = yardHandl.getStorelay(TO_ADDR[i]);
  107. if(lay < 10){ StoreLay = "0" + lay; }
  108. else{ StoreLay = "" + lay; }
  109. //From Address SLAB NO CLEAR
  110. if(YARD_ADDR[i] != null && !(YARD_ADDR[i].equals(""))){
  111. //防止炼钢,热轧之间误操作,把对方的坯料入库
  112. //if(YARD_ADDR[i].substring(0, 1).equals("L") || YARD_ADDR[i].substring(0, 1).equals("Z")|| YARD_ADDR[i].substring(0, 1).equals("z")){
  113. if((YARD_ADDR[i].substring(0, 1).equals("Z")|| YARD_ADDR[i].substring(0, 1).equals("z")) && !"Z999XN".equals(FROM_ADDR[i].substring(0,6))){
  114. context.put("MESSAGES", " 已经入库 " + YARD_ADDR[i]);
  115. return PosBizControlConstants.SUCCESS;
  116. }
  117. //清空原始垛位信息 EG: A00101 C00203 ....
  118. else{
  119. yardHandl.clearFromAddrBySlabNo(SLAB_NO[i]);
  120. }
  121. }
  122. /*PosParameter param = new PosParameter();
  123. PosRowSet rowset = null;
  124. PosRow row = null;*/
  125. // TO Address SLAB NO Setting
  126. yardHandl.setToAddr(SLAB_NO[i], FROM_ADDR[i], "", TO_ADDR[i], StoreLay, "", "ComplusMov");
  127. String activityId = "",AppId = "",Exeejob = "";
  128. int flag = 1;
  129. //入库
  130. if( (FROM_ADDR[i].substring(0,1).equals("L") || (FROM_ADDR[i].substring(0,1).equals("H") && !FROM_ADDR[i].substring(0,1).equals("H516"))
  131. || FROM_ADDR[i].substring(0,2).equals("A0") || FROM_ADDR[i].substring(0,2).equals("C0"))//在库跺位
  132. //出库跺位
  133. && (TO_ADDR[i].substring(0,1).equals("Z") || TO_ADDR[i].substring(0,1).equals("T") || TO_ADDR[i].equals("H516"))
  134. ){
  135. activityId = "55A";
  136. AppId = "板坯入热轧库";
  137. Exeejob = "N";
  138. flag = 0;
  139. //配重自动审核
  140. CallableStatement cstm = null;
  141. try
  142. {
  143. cstm = this.getDao("mesdao").getCallableStatement("WEIGHT_CHECK.CAL");
  144. cstm.setString(1, SLAB_NO[i]);
  145. cstm.registerOutParameter(2, java.sql.Types.VARCHAR);
  146. cstm.execute();
  147. //String err = cstm.getString(2);
  148. }catch(Exception ex){
  149. ex.printStackTrace();
  150. }
  151. finally{
  152. if(cstm != null){
  153. try{
  154. cstm.close();
  155. }catch(Exception e)
  156. {
  157. e.printStackTrace();
  158. }
  159. }
  160. }
  161. }
  162. //退库
  163. if( (FROM_ADDR[i].substring(0,1).equals("T") || FROM_ADDR[i].equals("H516") || FROM_ADDR[i].substring(0,1).equals("Z"))
  164. && ((TO_ADDR[i].substring(0,1).equals("L") || (TO_ADDR[i].substring(0,1).equals("H") && !TO_ADDR[i].substring(0,1).equals("H516"))
  165. || TO_ADDR[i].substring(0,2).equals("A0") || TO_ADDR[i].substring(0,2).equals("C0"))) ){
  166. activityId = "55A";
  167. AppId = "板坯退热轧库";
  168. Exeejob = "D";
  169. flag = 0;
  170. }
  171. /*跺位变更,出库操作*/
  172. if(TO_ADDR[i].substring(0,1).equals("Z")){
  173. yardHandl.setEntSlabComm(SLAB_NO[i], TO_ADDR[i], StoreLay, "1");
  174. }else if(TO_ADDR[i].substring(0,1).equals("L")){
  175. yardHandl.setEntSlabComm(SLAB_NO[i], TO_ADDR[i], StoreLay, "");
  176. }
  177. //检查是否有悬空垛位
  178. SendProg_NIG040200(FROM_ADDR[i]);
  179. SendProg_NIG040200(TO_ADDR[i]);
  180. /*//检查是否热送 HCR_CLF 修改入库时间记录(炼钢,热轧) CUR_LOAD_LOC
  181. PosParameter param5 = new PosParameter();
  182. param5.setWhereClauseParameter(0, SLAB_NO[i]);
  183. PosRowSet SpecSlabVO = getDao("mesdao").find("UIG040042_SPEC_SLAB_MILL_FL.select", param5); */
  184. if(flag == 0){
  185. /*财务数据上抛*/
  186. CallableStatement cstm = null;
  187. try
  188. {
  189. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  190. cstm.setString(1, SLAB_NO[i]);
  191. cstm.setString(2, activityId);
  192. cstm.setString(3, Exeejob);
  193. cstm.setString(4, AppId);
  194. cstm.setString(5, StringUtils.isBlank(MOVE_EMP_NM[0])?"":MOVE_EMP_NM[0]);
  195. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  196. cstm.execute();
  197. String err = cstm.getString(6);
  198. if(!org.apache.commons.lang.StringUtils.isBlank(cstm.getString(6))){
  199. context.put("MESSAGES","数据上传失败:" + err);
  200. return PosBizControlConstants.SUCCESS;
  201. }
  202. }catch(Exception ex){
  203. ex.printStackTrace();
  204. context.put("MESSAGES","Exception:" + ex.getMessage());
  205. return PosBizControlConstants.SUCCESS;
  206. }
  207. finally{
  208. if(cstm != null){
  209. try{
  210. cstm.close();
  211. }catch(Exception e)
  212. {
  213. e.printStackTrace();
  214. }
  215. }
  216. }
  217. }
  218. }
  219. context.put("MESSAGES", " 操作成功! ");
  220. return PosBizControlConstants.SUCCESS;
  221. }
  222. /**
  223. * 向指定URL发送GET方法的请求
  224. *
  225. * @param url
  226. * 发送请求的URL
  227. * @param param
  228. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  229. * @return URL 所代表远程资源的响应结果
  230. */
  231. public String sendGet(String url, String param) {
  232. String result = "";
  233. BufferedReader in = null;
  234. try {
  235. String urlNameString = url + param;
  236. URL realUrl = new URL(urlNameString);
  237. // 打开和URL之间的连接
  238. URLConnection connection = realUrl.openConnection();
  239. // 设置通用的请求属性
  240. connection.setRequestProperty("accept", "*/*");
  241. connection.setRequestProperty("connection", "Keep-Alive");
  242. connection.setRequestProperty("user-agent",
  243. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  244. // 建立实际的连接
  245. connection.connect();
  246. // 获取所有响应头字段
  247. Map<String, List<String>> map = connection.getHeaderFields();
  248. // 遍历所有的响应头字段
  249. for (String key : map.keySet()) {
  250. System.out.println(key + "--->" + map.get(key));
  251. }
  252. // 定义 BufferedReader输入流来读取URL的响应
  253. in = new BufferedReader(new InputStreamReader(
  254. connection.getInputStream(),"UTF-8"));
  255. String line;
  256. while ((line = in.readLine()) != null) {
  257. result += line;
  258. }
  259. } catch (Exception e) {
  260. System.out.println("发送GET请求出现异常!" + e);
  261. e.printStackTrace();
  262. }
  263. // 使用finally块来关闭输入流
  264. finally {
  265. try {
  266. if (in != null) {
  267. in.close();
  268. }
  269. } catch (Exception e2) {
  270. e2.printStackTrace();
  271. }
  272. }
  273. return result;
  274. }
  275. //Mill Schedule delete request service call
  276. public void SendProg_NIF024060(String SlabNo )
  277. {
  278. PosContext context = new PosContext();
  279. PosMessage message = new PosMESMessageImpl();
  280. String TcId = "NIF024060";
  281. message.setTCID(TcId);
  282. message.setObject("MSG_ID",TcId);
  283. message.setObject("TYPE","S");
  284. message.setObject("FROM",SlabNo);
  285. message.setObject("TO",SlabNo);
  286. message.setObject("REG_ID","UIG040010");
  287. context.setMessage(message);
  288. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  289. String transactionCode = context.getMessage().getTC();
  290. message.setTCID(TcId);
  291. String serviceName = "NIF024060";
  292. String SERVICE_POSTFIX = "-service";
  293. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  294. context.setMessage(message);
  295. PosBizControlIF controller = PosBizProvider.getController();
  296. controller.doSubController(context,false);
  297. }
  298. public String SendProg_NIG040200(String yardAddr)
  299. {
  300. logger.logInfo("PosSaveSlabCutting---> yardAddr:"+yardAddr );
  301. PosContext context = new PosContext();
  302. PosMessage message = new PosMESMessageImpl();
  303. String TcId = "NIG040200";
  304. message.setTCID(TcId);
  305. message.setObject("MSG_ID",TcId);
  306. message.setObject("YARD_ADDR",yardAddr);
  307. context.setMessage(message);
  308. message.setTCID(TcId);
  309. String SERVICE_POSTFIX = "-service";
  310. context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX);
  311. PosBizProvider.getController().doSubController(context, false);
  312. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  313. logger.logInfo("PosSaveSlabCutting SendProg_NIE012070 SERVICE_ERR_MSG:"+SERVICE_ERR_MSG );
  314. if (SERVICE_ERR_MSG != null)
  315. {
  316. throw new PosException(SERVICE_ERR_MSG);
  317. }
  318. return null;
  319. }
  320. }