e21c911dd5e86108e621a8968708944894b73a33.svn-base 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. package xin.glue.ui.G.G04;
  2. import java.math.BigDecimal;
  3. import java.text.DateFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import com.posdata.glue.PosException;
  7. import com.posdata.glue.biz.activity.PosActivity;
  8. import com.posdata.glue.biz.constants.PosBizControlConstants;
  9. import com.posdata.glue.biz.control.PosBizControlIF;
  10. import com.posdata.glue.biz.control.PosBizProvider;
  11. import com.posdata.glue.component.PosConstants;
  12. import com.posdata.glue.context.PosContext;
  13. import com.posdata.glue.dao.vo.PosParameter;
  14. import com.posdata.glue.dao.vo.PosRow;
  15. import com.posdata.glue.dao.vo.PosRowSet;
  16. import com.posdata.glue.msg.PosMESMessageImpl;
  17. import com.posdata.glue.msg.PosMessage;
  18. public class XinInsertNewCutSlab extends PosActivity {
  19. public String runActivity(PosContext context) {
  20. String[] SLAB_NO = (String[])context.get("SLAB_NO");
  21. String[] SIZE_DEC_FL = (String[])context.get("SIZE_DEC_FL");
  22. String[] MODIFY_CD = (String[])context.get("MODIFY_CD");
  23. String[] SIZE_UPDT_BEF_THK = (String[])context.get("SIZE_UPDT_BEF_THK");
  24. String[] SIZE_UPDT_BEF_WTH = (String[])context.get("SIZE_UPDT_BEF_WTH");
  25. String[] SIZE_UPDT_BEF_LEN = (String[])context.get("SIZE_UPDT_BEF_LEN");
  26. String[] SIZE_UPDT_BEF_WGT = (String[])context.get("SIZE_UPDT_BEF_WGT");
  27. String[] SLAB_THK = (String[])context.get("SLAB_THK");
  28. String[] SLAB_WTH = (String[])context.get("SLAB_WTH");
  29. String[] SLAB_LEN = (String[])context.get("SLAB_LEN");
  30. String[] SLAB_WGT = (String[])context.get("SLAB_WGT");
  31. String[] SIZE_UPDT_WKSHIFT = (String[])context.get("SIZE_UPDT_WKSHIFT");
  32. String[] SIZE_UPDT_WKGROUP = (String[])context.get("SIZE_UPDT_WKGROUP");
  33. String[] SIZE_UPDT_EMP_NO = (String[])context.get("SIZE_UPDT_EMP_NO");
  34. String[] UPDT_BEF_SLABNO = (String[])context.get("UPDT_BEF_SLABNO");
  35. String[] SLAB_YARD_ADDR = (String[])context.get("CUR_LOAD_LOC");
  36. String[] ORL_YARD_ADDR = (String[])context.get("ORL_LOAD_LOC");
  37. PosParameter param1 = new PosParameter();
  38. param1.setWhereClauseParameter(0,UPDT_BEF_SLABNO[0]);
  39. PosRowSet slabComVo = getDao("mesdao").find("UIG040070_04.select", param1);
  40. String OrdNo = "";
  41. String OrdSeq = "";
  42. String OrdFl = "";
  43. String CurProgCd = "";
  44. String BefProgCd = "";
  45. String BefOrdNo = "";
  46. String BefOrdSeq = "";
  47. String NonOrdResCd = "";
  48. String NonOrdResDate = "";
  49. String smsYardEntDtime = "";
  50. String slabStockEntDtime = "";
  51. String slabRt = "";
  52. if (slabComVo.hasNext()) {
  53. PosRow slabComROW = slabComVo.next();
  54. OrdNo = (String)slabComROW.getAttribute("ORD_NO");
  55. OrdSeq = (String)slabComROW.getAttribute("ORD_SEQ");
  56. CurProgCd = (String)slabComROW.getAttribute("CUR_PROG_CD");
  57. OrdFl = (String)slabComROW.getAttribute("ORD_FL");
  58. smsYardEntDtime = (String)slabComROW.getAttribute("SMS_YARD_ENT_DTIME");
  59. slabStockEntDtime = (String)slabComROW.getAttribute("SLAB_STOCK_ENT_DTIME");
  60. slabRt = (String)slabComROW.getAttribute("SLAB_RT");
  61. BefProgCd = CurProgCd;
  62. BefOrdNo = OrdNo;
  63. BefOrdSeq = OrdSeq;
  64. }else{
  65. context.put("MESSAGES", " 错误,缺少板坯信息! ");
  66. return PosBizControlConstants.SUCCESS;
  67. }
  68. if(!(CurProgCd.equals("RBA")||CurProgCd.equals("RRC")||CurProgCd.equals("RGB"))){
  69. context.put("MESSAGES", " 坯料状态错误,不能操作! ");
  70. return PosBizControlConstants.SUCCESS;
  71. }
  72. //区分炼钢热轧入库
  73. if(ORL_YARD_ADDR[0].substring(0, 1).equals("L")){
  74. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  75. smsYardEntDtime = formatter.format(new Date());
  76. }else if(ORL_YARD_ADDR[0].substring(0, 1).equals("Z")){
  77. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  78. slabStockEntDtime = formatter.format(new Date());
  79. }else{
  80. context.put("MESSAGES", " 错误,坯料不在库! ");
  81. return PosBizControlConstants.SUCCESS;
  82. }
  83. // 未指示切割 全部降为余材
  84. if(MODIFY_CD[0].equals("02")){
  85. CurProgCd = slabRt.equals("H")?"RRC":"RGB";
  86. OrdFl = "2";
  87. OrdNo = "";
  88. OrdSeq = "";
  89. NonOrdResCd = "3A"; //尺寸变更
  90. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  91. NonOrdResDate = formatter.format(new Date());
  92. // 指示切割
  93. }else if(MODIFY_CD[0].equals("03")){
  94. CurProgCd = slabRt.equals("H")?"RRC":"RGB";
  95. OrdFl = "2";
  96. OrdNo = "";
  97. OrdSeq = "";
  98. NonOrdResCd = "3A"; //尺寸变更
  99. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  100. NonOrdResDate = formatter.format(new Date());
  101. }
  102. PosParameter param = null;
  103. if(UPDT_BEF_SLABNO.length > 0 ){
  104. for(int i = 0 ; i < UPDT_BEF_SLABNO.length ; i++){
  105. /*
  106. //指示切割
  107. if(MODIFY_CD[0].equals("03")){
  108. BigDecimal Wgt = new BigDecimal(SLAB_WGT[i]);
  109. String RtnSizeDec = SlabSizeDec(new BigDecimal(SLAB_THK[i]),new BigDecimal(SLAB_WTH[i]),new BigDecimal(SLAB_LEN[i]),SLAB_NO[i],Wgt);
  110. if(RtnSizeDec.equals("Y")){
  111. SIZE_DEC_FL[i] = "1";
  112. }else if(RtnSizeDec.equals("N")){
  113. SIZE_DEC_FL[i] = "2";
  114. }else if(RtnSizeDec.equals("F")){
  115. context.put("MESSAGES", " 错误,不能为指示切割! ");
  116. return PosBizControlConstants.SUCCESS;
  117. }
  118. //尺寸不合格
  119. if(SIZE_DEC_FL[i].equals("2")){
  120. CurProgCd = slabRt.equals("H")?"RRC":"RGB";
  121. OrdFl = "2";
  122. OrdNo = "";
  123. OrdSeq = "";
  124. NonOrdResCd = "3B"; //尺寸异常
  125. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  126. NonOrdResDate = formatter.format(new Date());
  127. }else if(SIZE_DEC_FL[i].equals("1")){
  128. if (OrdFl != null && OrdFl.equals("2")) {
  129. CurProgCd = slabRt.equals("H")?"RRC":"RGB";
  130. } else if (OrdFl.equals("1")){
  131. CurProgCd = "RBA"; //轧钢指示待机
  132. }
  133. }
  134. }*/
  135. String storelay = null;
  136. param = new PosParameter();
  137. if(SLAB_YARD_ADDR[i]== null&& SLAB_YARD_ADDR[i].equals(""))continue;
  138. param.setWhereClauseParameter(0, SLAB_YARD_ADDR[i]);
  139. PosRowSet storelayVo = getDao("mesdao").find("UIG040060_YARD_LAY.select", param);
  140. if(storelayVo.hasNext()){
  141. PosRow storelayRow = storelayVo.next();
  142. storelay = (String)storelayRow.getAttribute("STORELAY");
  143. }
  144. param = new PosParameter();
  145. param.setWhereClauseParameter(0, SLAB_NO[i]);
  146. param.setWhereClauseParameter(1, "UIG040070");
  147. param.setWhereClauseParameter(2,SLAB_YARD_ADDR[i]);
  148. param.setWhereClauseParameter(3, storelay);
  149. this.getDao("mesdao").update("UIG040070_SLAB_YARD.update", param);
  150. param = new PosParameter();
  151. param.setValueParamter(0, SLAB_NO[i]);
  152. param.setValueParamter(1, CurProgCd );
  153. param.setValueParamter(2, BefOrdNo);
  154. param.setValueParamter(3, BefOrdSeq );
  155. param.setValueParamter(4, OrdNo );
  156. param.setValueParamter(5, OrdSeq );
  157. param.setValueParamter(6, OrdFl );
  158. param.setValueParamter(7, SLAB_THK[i]);
  159. param.setValueParamter(8, SLAB_WTH[i]);
  160. param.setValueParamter(9, SLAB_LEN[i]);
  161. param.setValueParamter(10, SLAB_WGT[i]);
  162. param.setValueParamter(11, MODIFY_CD[i]);
  163. param.setValueParamter(12, SIZE_UPDT_BEF_THK[i]);
  164. param.setValueParamter(13, SIZE_UPDT_BEF_WTH[i]);
  165. param.setValueParamter(14, SIZE_UPDT_BEF_LEN[i]);
  166. param.setValueParamter(15, SIZE_UPDT_BEF_WGT[i]);
  167. param.setValueParamter(16, SLAB_THK[i]);
  168. param.setValueParamter(17, SLAB_WTH[i]);
  169. param.setValueParamter(18, SLAB_LEN[i]);
  170. param.setValueParamter(19, SLAB_WGT[i]);
  171. param.setValueParamter(20, SIZE_UPDT_WKSHIFT[i]);
  172. param.setValueParamter(21, SIZE_UPDT_WKGROUP[i]);
  173. param.setValueParamter(22, SIZE_UPDT_EMP_NO[i]);
  174. param.setValueParamter(23, SIZE_DEC_FL[i]);
  175. param.setValueParamter(24, NonOrdResCd);
  176. param.setValueParamter(25, NonOrdResDate);
  177. param.setValueParamter(26, SLAB_YARD_ADDR[i] + storelay);
  178. param.setValueParamter(27, smsYardEntDtime);
  179. param.setValueParamter(28, slabStockEntDtime);
  180. param.setValueParamter(29, SLAB_NO[i]);
  181. param.setValueParamter(30, UPDT_BEF_SLABNO[i]);
  182. this.getDao("mesdao").insert("UIG040070_SHR.insert",param);
  183. param = new PosParameter();
  184. param.setValueParamter(0, SLAB_NO[i]);
  185. param.setValueParamter(1, UPDT_BEF_SLABNO[i]);
  186. this.getDao("mesdao").insert("UIG040070_SHR_COMMD_02.insert",param);
  187. param = new PosParameter();
  188. param.setValueParamter(0, OrdFl);
  189. param.setValueParamter(1, SLAB_NO[i]);
  190. getDao("mesdao").update("UIG040070_SLAB_COMM_D_ORDFL.update", param);
  191. //进程整理
  192. BigDecimal SlabWgt = new BigDecimal(SLAB_WGT[i]);
  193. SendProg_NIE012070(SLAB_NO[i],OrdNo,OrdSeq,BefOrdNo,BefOrdSeq,CurProgCd,BefProgCd,"TM",SlabWgt);
  194. SendProg_NIE012080();
  195. }
  196. //结束母板坯
  197. param = new PosParameter();
  198. param.setWhereClauseParameter(0, UPDT_BEF_SLABNO[0]);
  199. this.getDao("mesdao").update("UIG040070_SLAB_END.update",param);
  200. param = new PosParameter();
  201. param.setWhereClauseParameter(0, UPDT_BEF_SLABNO[0]);
  202. this.getDao("mesdao").update("UIG040070_SLAB_COMM.update", param);
  203. //整理垛位
  204. SendProg_NIG040200(ORL_YARD_ADDR[0].substring(0,(ORL_YARD_ADDR[0].length()-2)));
  205. context.put("MESSAGES", " 操作成功! ");
  206. }
  207. return PosBizControlConstants.SUCCESS;
  208. }
  209. // SLAB SIZE DECISION ( RESULT SLAB WGT,ORDER WGT COMPARE)
  210. // TBG02_SLAB_COMM--> SLAB_WGT
  211. // TBG02_SLAB_COMM_D --> ORD_NO,ORD_SEQ
  212. // TBA01_ORD_LINE --> PROD_WGT_MIN,PROD_WGT_MAX
  213. public String SlabSizeDec(BigDecimal slabThk,BigDecimal slabWth,BigDecimal slabLen,String SlabNo,BigDecimal SlabWgt)
  214. {
  215. logger.logInfo("XinSaveSlabComm SlabWgt:"+SlabWgt);
  216. BigDecimal SlabThk = slabThk;
  217. BigDecimal SlabWth = slabWth;
  218. BigDecimal SlabLen = slabLen;
  219. BigDecimal ordLen = new BigDecimal(0);
  220. BigDecimal ordWgt = new BigDecimal(0);
  221. BigDecimal coilOutDia = new BigDecimal(0);
  222. BigDecimal coilInDia = new BigDecimal(0);
  223. BigDecimal ordThk = new BigDecimal(0);
  224. BigDecimal ordWth = new BigDecimal(0);
  225. BigDecimal coilThk = new BigDecimal(0);
  226. BigDecimal coilWth = new BigDecimal(0);
  227. PosParameter param1 = new PosParameter();
  228. param1.setWhereClauseParameter(0, SlabNo);
  229. PosRowSet CommDVO = getDao("mesdao").find("NIG020610_SLAB_COMM_D.select", param1);
  230. PosRowSet CommDVO2 = getDao("mesdao").find("UIG020060_SLAB_COMMD_ORD.select",param1);
  231. if(CommDVO2.hasNext()){
  232. PosRow row = CommDVO2.next();
  233. ordThk = (BigDecimal)row.getAttribute("SLAB_THK");
  234. ordWth = (BigDecimal)row.getAttribute("SLAB_WTH");
  235. coilThk = (BigDecimal)row.getAttribute("ORD_THK");
  236. coilWth = (BigDecimal)row.getAttribute("ORD_WTH");
  237. coilInDia = (BigDecimal)row.getAttribute("COIL_INDIA");
  238. }else return "F";
  239. BigDecimal total = ordWth.add(new BigDecimal(100));
  240. if(SlabWth.compareTo(ordWth) < 0||total.compareTo(SlabWth) < 0){
  241. return "N";
  242. }
  243. param1 = new PosParameter();
  244. PosRowSet rateVo = getDao("mesdao").find("UIG020060_proc_rate.select", param1);
  245. BigDecimal procRate = new BigDecimal(1);
  246. if(rateVo.hasNext()){
  247. PosRow posrow = rateVo.next();
  248. procRate = (BigDecimal)posrow.getAttribute("PROC_RATE");
  249. }
  250. if ( CommDVO.hasNext()) {
  251. PosRow CommDROW = CommDVO.next();
  252. BigDecimal PROD_WGT_MIN = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MIN");
  253. BigDecimal PROD_WGT_MAX = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MAX");
  254. logger.logInfo("XinSaveSlabComm PROD_WGT_MIN:"+PROD_WGT_MIN);
  255. logger.logInfo(PROD_WGT_MIN);
  256. logger.logInfo(PROD_WGT_MAX);
  257. ordWgt = SlabWgt.multiply(procRate);
  258. ordWgt = ordWgt.divide(new BigDecimal(100));
  259. logger.logInfo("XinSaveSlabComm ordWgt:"+ ordWgt);
  260. if(PROD_WGT_MIN == null)PROD_WGT_MIN = new BigDecimal(0);
  261. if(PROD_WGT_MAX == null)PROD_WGT_MAX = new BigDecimal(0);
  262. //如果板坯重量不在订单重量范围内
  263. if (ordWgt.compareTo(PROD_WGT_MIN) < 0 || PROD_WGT_MAX.compareTo(ordWgt) < 0 ) {
  264. //取消订单
  265. return "N";
  266. }
  267. }
  268. logger.logInfo("ordWgt=" + ordWgt );
  269. logger.logInfo("ordThk=" + ordThk );
  270. logger.logInfo("SlabWth=" + SlabWth );
  271. ordLen = ordWgt.multiply(new BigDecimal(1000000));
  272. ordLen = ordLen.divide(coilThk,3,BigDecimal.ROUND_HALF_UP);
  273. ordLen = ordLen.divide(coilWth,3,BigDecimal.ROUND_HALF_UP);
  274. ordLen = ordLen.divide(new BigDecimal(7.8),0,BigDecimal.ROUND_HALF_UP);
  275. coilOutDia = new BigDecimal(Math.sqrt(ordWgt.multiply(new BigDecimal(1000000).multiply(new BigDecimal(4)).divide(new BigDecimal(7.8*3.14*0.98),3,BigDecimal.ROUND_HALF_UP).divide(SlabWth,0,BigDecimal.ROUND_HALF_UP)).add(coilInDia.multiply(coilInDia)).doubleValue()));
  276. logger.logInfo("-------------slabThk" + slabThk + "--slabWth" + slabWth + "--slabLen" + slabLen + "--ordLen" + ordLen + "--ordWgt" + ordWgt + "--coilOutDia" + coilOutDia + "--" );
  277. param1 = new PosParameter();
  278. param1.setWhereClauseParameter(0,slabThk);
  279. param1.setWhereClauseParameter(1,slabWth);
  280. param1.setWhereClauseParameter(2,slabLen);
  281. param1.setWhereClauseParameter(3,ordLen);
  282. param1.setWhereClauseParameter(4,ordWgt);
  283. param1.setWhereClauseParameter(5,coilOutDia);
  284. param1.setWhereClauseParameter(6,SlabNo);
  285. int rowset = getDao("mesdao").update("UIG020060_slab_comm_d.update",param1);
  286. return "Y";
  287. }
  288. public PosContext SendProg_NIE012070(String MatNo,String sOrdNo,String sOrdSeq,String sBefOrdNo,String sBefOrdSeq,String sProgCd,String BefProcCd,String sKind,BigDecimal nwgt )
  289. {
  290. PosContext context = new PosContext();
  291. PosMessage message = new PosMESMessageImpl();
  292. String TcId = "NIE012070";
  293. message.setTCID(TcId);
  294. message.setObject("MSG_ID",TcId);
  295. message.setObject("BEF_ORD_NO",sBefOrdNo);
  296. message.setObject("BEF_ORD_SEQ",sBefOrdSeq);
  297. message.setObject("ORD_NO",sOrdNo);
  298. message.setObject("ORD_SEQ",sOrdSeq);
  299. message.setObject("BEF_PROG_CD",BefProcCd);
  300. message.setObject("PROG_CD",sProgCd);
  301. message.setObject("MAT_TYPE",sKind);
  302. message.setObject("MAT_NO",MatNo);
  303. message.setObject("WGT", nwgt );
  304. message.setObject("PGMID","UIG040070");
  305. message.setObject("REG_ID","UIG040070");
  306. message.setTCID(TcId);
  307. context.setMessage(message);
  308. // this.processComponent(PosConstants.CREATE_MESSAGE, context);
  309. // String transactionCode = context.getMessage().getTC();
  310. String SERVICE_POSTFIX = "-service";
  311. context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX);
  312. // context.setMessage(message);
  313. PosBizControlIF controller = PosBizProvider.getController();
  314. controller.doSubController(context,false);
  315. return null;
  316. }
  317. public void SendProg_NIE012080()
  318. {
  319. PosContext context = new PosContext();
  320. PosMessage message = new PosMESMessageImpl();
  321. String TcId = "NIE012080";
  322. message.setTCID(TcId);
  323. message.setObject("MSG_ID",TcId);
  324. message.setObject("AA",null);
  325. context.setMessage(message);
  326. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  327. String transactionCode = context.getMessage().getTC();
  328. message.setTCID(TcId);
  329. String serviceName = "NIE012080";
  330. String SERVICE_POSTFIX = "-service";
  331. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  332. context.setMessage(message);
  333. PosBizControlIF controller = PosBizProvider.getController();
  334. controller.doSubController(context,false);
  335. }
  336. public String SendProg_NIG040200(String yardAddr)
  337. {
  338. logger.logInfo("PosSaveSlabCutting---> yardAddr:"+yardAddr );
  339. PosContext context = new PosContext();
  340. PosMessage message = new PosMESMessageImpl();
  341. String TcId = "NIG040200";
  342. message.setTCID(TcId);
  343. message.setObject("MSG_ID",TcId);
  344. message.setObject("YARD_ADDR",yardAddr);
  345. context.setMessage(message);
  346. message.setTCID(TcId);
  347. String SERVICE_POSTFIX = "-service";
  348. context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX);
  349. PosBizProvider.getController().doSubController(context, false);
  350. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  351. logger.logInfo("PosSaveSlabCutting SendProg_NIE012070 SERVICE_ERR_MSG:"+SERVICE_ERR_MSG );
  352. if (SERVICE_ERR_MSG != null)
  353. {
  354. throw new PosException(SERVICE_ERR_MSG);
  355. }
  356. return null;
  357. }
  358. }