a0aeb64095c2d7c6027b4293985e26ca154aaa1a.svn-base 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294
  1. package xin.glue.ui.G.G02;
  2. import java.math.BigDecimal;
  3. import java.sql.CallableStatement;
  4. import java.sql.SQLException;
  5. import java.text.DateFormat;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. import org.apache.commons.lang.StringUtils;
  9. import xin.glue.ui.G.G01.XTBGCOMM;
  10. import xin.glue.ui.G.G01.XTBGCreateMaterial;
  11. import com.posdata.glue.PosException;
  12. import com.posdata.glue.biz.activity.PosActivity;
  13. import com.posdata.glue.biz.constants.PosBizControlConstants;
  14. import com.posdata.glue.biz.control.PosBizControlIF;
  15. import com.posdata.glue.biz.control.PosBizProvider;
  16. import com.posdata.glue.component.PosConstants;
  17. import com.posdata.glue.context.PosContext;
  18. import com.posdata.glue.dao.PosGenericDao;
  19. import com.posdata.glue.dao.vo.PosParameter;
  20. import com.posdata.glue.dao.vo.PosRow;
  21. import com.posdata.glue.dao.vo.PosRowSet;
  22. import com.posdata.glue.msg.PosMESMessageImpl;
  23. import com.posdata.glue.msg.PosMessage;
  24. public class PosSaveSlabCutting extends PosActivity
  25. {
  26. public String runActivity(PosContext context)
  27. {
  28. PosGenericDao dao = getDao("mesdao");
  29. PosParameter param = new PosParameter();
  30. PosRowSet rowset = null;
  31. PosRow row = null;
  32. CallableStatement cstm = null;
  33. XTBGCreateMaterial xtbcm = new XTBGCreateMaterial(dao);
  34. XTBGCOMM xtbgcomm = new XTBGCOMM(dao);
  35. String[] ShiftCd = (String[]) context.get("CUT_WKSHIFT"); //班次
  36. String[] WkGroup = (String[]) context.get("CUT_WKGROUP"); //班组
  37. String[] RegId = (String[]) context.get("CUT_EMP_ID"); //作业人
  38. String[] CcDevNo = (String[]) context.get("CC_DEVNO"); //连铸机号
  39. String[] status = (String[]) context.get("rowStuts"); //行状态
  40. String[] SlabNo = (String[]) context.get("SLAB_NO"); //板坯号
  41. String[] SlabThk = (String[]) context.get("SLAB_THK"); //板坯厚度
  42. String[] SlabWth = (String[]) context.get("SLAB_WTH"); //板坯宽度
  43. String[] SlabLen = (String[]) context.get("SLAB_LEN"); //板坯长度
  44. String[] SlabWgt = (String[]) context.get("SLAB_WGT"); //板坯重量
  45. String[] ord_Fl = (String[]) context.get("ORD_FL"); //订单区分
  46. String[] SlabSizeDec = (String[]) context.get("SLAB_SIZE_DEC_GRD"); //尺寸等级
  47. String[] LastCutYn = (String[]) context.get("LAST_SLAB_YN"); //炉次结束区分
  48. String[] SurplmatlYn = (String[]) context.get("SURPLMATL_YN"); //超量区分
  49. String[] strandNo1 = (String[]) context.get("STRAND_NO1"); //流号
  50. String[] strandNo2 = (String[]) context.get("STRAND_NO2"); //流号
  51. String[] chk = (String[])context.get("CHK"); //选择区分
  52. String[] endDifStlGrdYn = (String[])context.get("DIFF_STL_GRD_STA_END_YN"); //过渡段
  53. String[] twSlabYn = (String[])context.get("TW_SLAB_YN"); //头尾坯
  54. //注意 这里计划板坯号的炉号有可能跟炉次号不一样 如果切割时候进行移动操作
  55. String[] PlanSlabNo = (String[]) context.get("PLAN_SLAB_NO"); //计划板坯号
  56. String[] ChargeNo = (String[]) context.get("CHARGE_NO"); //炉次号
  57. String[] subSlabNo = (String[]) context.get("SUB_SLAB_NO"); //子板坯号
  58. if(status == null){
  59. context.put("MESSAGES", " 必须选择一行记录! ");
  60. return PosBizControlConstants.SUCCESS;
  61. }
  62. if(CcDevNo[0] == null || StringUtils.isBlank(CcDevNo[0])){
  63. context.put("MESSAGES", " 请在上方选择对应连铸机号! ");
  64. return PosBizControlConstants.SUCCESS;
  65. }
  66. dao.update("NIG020200_BOF_STAT_DTIME.update");
  67. dao.update("NIG020200_CASTING_STA_DTIME.update");
  68. dao.update("NIG020200_CASTING_END_DTIME.update");
  69. String[] strandNo = new String[SlabNo.length];
  70. if (status != null)
  71. {
  72. for (int i = 0; i < status.length; i++)
  73. {
  74. // SEARCH FROM TBF01_SPE_SLAB
  75. String OrdNo = null;
  76. String OrdSeq = null;
  77. String MILL_FL = null;
  78. String STATUS_CD = null;
  79. String HcrClf = null;
  80. String SlabRt = null;
  81. String ordFl = "";
  82. String sfCode = null;
  83. String DSN_SLAB_NO = null;
  84. //SEARCH FROM TBG02_SLAB_COMM
  85. String IngrDec = null;
  86. String LoadLoc = null;
  87. String CUR_PROG_CD = null;
  88. String PR_BEF_PROG_CD = null;
  89. String PR_CHARGE_WGT = null;
  90. String EdPlanSLabNo = null;
  91. String ED_SLAB_NO = null;
  92. String BefOrdNo = null;
  93. String BefOrdSeq = null;
  94. String NonordCause = null;
  95. String YardLoc = null;
  96. String LinYardLoc = null;
  97. String RST_SLAB_CUT_DTIME = null;
  98. String ED_DIFF_STL_GRD_STA_END_YN1 = "1"; //过渡段
  99. String SLAB_SIZE_DEC_GRD = "1"; //尺寸等级
  100. String p_slab_status = null; //中厚板的坯料
  101. String Cur_Strand_no = ""; //流号
  102. String stlGrd = null;
  103. if(SlabLen == null || SlabLen[i].equals("0") || SlabThk == null || SlabThk[i].equals("0")
  104. || SlabWth == null || SlabWth[i].equals("0") || SlabWgt == null || SlabWgt[i].equals("0")){
  105. context.put("MESSAGES", SlabNo[i] + "规格与重量不能为0,操作失败! ");
  106. return PosBizControlConstants.SUCCESS;
  107. }
  108. if(Double.parseDouble(SlabLen[i]) > 20000){
  109. context.put("MESSAGES", SlabNo[i] + "长度不能超过20米,操作失败! ");
  110. return PosBizControlConstants.SUCCESS;
  111. }
  112. //经技术中心与二钢厂协调后将原钢坯密度7.8改为7.85,由于原理重是由板坯计划过来,无法修改,故只改板坯输机后的理重 20200821 jiangxin
  113. SlabWgt[i] = Math.round(Double.parseDouble(SlabThk[i]) * Double.parseDouble(SlabWth[i]) * Double.parseDouble(SlabLen[i]) * 7.85 / 1000000) + "";
  114. if(!chk[i].equals("Y")) continue;
  115. //钢水余量切非计划的坯料时 生成计划板坯号 这时的板坯号对应的炉次号 肯定跟实绩炉次号一样
  116. if (PlanSlabNo[i]== null || PlanSlabNo[i].equals("") ) {
  117. param = new PosParameter();
  118. param.setWhereClauseParameter(0, ChargeNo[0]);
  119. PosRowSet chargeVO = getDao("mesdao").find("UIG020060_02.select", param);
  120. if (chargeVO.hasNext() ) {
  121. PosRow chargeROW = chargeVO.next();
  122. String PlanChargeNo = (String)chargeROW.getAttribute("PLAN_CHARGE_NO");
  123. EdPlanSLabNo = PlanChargeNo+"010";
  124. PlanSlabNo[i] = EdPlanSLabNo;
  125. }
  126. if(SurplmatlYn[i]!= null && SurplmatlYn[i].equals("S")){
  127. xtbcm.CreateSlab(PlanSlabNo[i],"");
  128. }
  129. }
  130. //获取流号
  131. if(strandNo1[i].equals("Y")){
  132. strandNo[i] = "1";
  133. }else if(strandNo2[i].equals("Y")){
  134. strandNo[i] = "2";
  135. }else{
  136. context.put("MESSAGES", SlabNo[i] + " 流号不能为空,操作失败! ");
  137. return PosBizControlConstants.SUCCESS;
  138. }
  139. //生成按流号划分的板坯号 SLAB_NO
  140. //查询坯料进程状态,确认修改流号导致的坯料号变更对后续操作无影响
  141. //做完轧制计划的坯料不许变更,必须人工降级后操作
  142. //如果是修改流号,为减少实物无系统数据混乱,此坯料降级为余材
  143. param = new PosParameter();
  144. param.setWhereClauseParameter(0, PlanSlabNo[i]);
  145. String querysql = "SELECT T.SLAB_STAT,T.STRAND_NO FROM TBG02_SLAB_COMM T WHERE T.PLAN_SLAB_NO = ? ORDER BY T.SUB_SLAB_NO DESC";
  146. rowset = dao.findByQueryStatement(querysql, param);
  147. if(rowset.hasNext()){
  148. row = rowset.next();
  149. String slabStat = (String)row.getAttribute("SLAB_STAT");
  150. String tmpStrandNo = (String)row.getAttribute("STRAND_NO");
  151. if(tmpStrandNo != null && !tmpStrandNo.equals(strandNo[i])){
  152. context.put("MESSAGES", " 切割完成流号不能修改! ");
  153. return PosBizControlConstants.SUCCESS;
  154. }
  155. //不是第一次切割,流号修改,此坯料降级为余材 && !preStrandNo.equals(strandNo[i])
  156. if(slabStat.equals("1")){
  157. param = new PosParameter();
  158. param.setValueParamter(0, strandNo[i]);
  159. param.setValueParamter(1, ChargeNo[0]);
  160. param.setValueParamter(2, ChargeNo[0]);
  161. param.setValueParamter(3, ChargeNo[0]);
  162. param.setValueParamter(4, ChargeNo[0]);
  163. param.setValueParamter(5, ChargeNo[0]);
  164. param.setValueParamter(6, ChargeNo[0]);
  165. param.setValueParamter(7, PlanSlabNo[i]);
  166. this.getDao("mesdao").update("UIG020060_SUBSLABN0_CREATE",param);
  167. param = new PosParameter();
  168. String qurey_sql = "SELECT SLAB_NO FROM TBG02_SLAB_COMM WHERE PLAN_SLAB_NO = ? ORDER BY SUB_SLAB_NO DESC";
  169. param.setWhereClauseParameter(0,PlanSlabNo[i]);
  170. rowset = dao.findByQueryStatement(qurey_sql, param);
  171. if(rowset.hasNext()){
  172. row = rowset.next();
  173. String tempNo = (String)row.getAttribute("SLAB_NO");
  174. SlabNo[i] = tempNo.substring(10, 13);
  175. }else{
  176. context.put("MESSAGES", " 错误! ");
  177. return PosBizControlConstants.SUCCESS;
  178. }
  179. }
  180. }
  181. //实绩板坯号
  182. ED_SLAB_NO = ChargeNo[0]+ SlabNo[i];
  183. //计划板坯号
  184. EdPlanSLabNo = PlanSlabNo[i];
  185. //确认板坯信息已经生成
  186. String sql = "select * from TBG02_SLAB_COMM where SLAB_NO = ?";
  187. //板坯信息
  188. param = new PosParameter();
  189. param.setWhereClauseParameter(0, ED_SLAB_NO);
  190. rowset = dao.findByQueryStatement(sql, param);
  191. if (rowset.hasNext())
  192. {
  193. row = rowset.next();
  194. IngrDec = (String)row.getAttribute("SLAB_INGR_DEC_GRD");
  195. LoadLoc = (String)row.getAttribute("CUR_LOAD_LOC");
  196. CUR_PROG_CD = (String)row.getAttribute("CUR_PROG_CD");
  197. PR_BEF_PROG_CD = (String)row.getAttribute("BEF_PROG_CD");
  198. PR_CHARGE_WGT = (String)row.getAttribute("CHARGE_WGT");
  199. Cur_Strand_no = (String)row.getAttribute("STRAND_NO");
  200. ordFl = (String)row.getAttribute("ORD_FL");
  201. }
  202. //板坯计划信息
  203. param = new PosParameter();
  204. param.setWhereClauseParameter(0, EdPlanSLabNo);
  205. rowset = getDao("mesdao").find("UIG020060_03.select", param);
  206. if(rowset.hasNext())
  207. {
  208. row = rowset.next();
  209. OrdNo = (String) row.getAttribute("ORD_NO");
  210. OrdSeq = (String) row.getAttribute("ORD_SEQ");
  211. MILL_FL = (String) row.getAttribute("MILL_FL");
  212. STATUS_CD = (String) row.getAttribute("STATUS_CD");
  213. HcrClf = (String) row.getAttribute("HCR_CLF");
  214. SlabRt = (String) row.getAttribute("SLAB_RT");
  215. sfCode = (String) row.getAttribute("SCARPING_PROC_YN");
  216. DSN_SLAB_NO = (String) row.getAttribute("DSN_SLAB_NO");
  217. stlGrd = (String) row.getAttribute("STL_GRD");
  218. }else{
  219. context.put("MESSAGES", " 缺少板坯指示信息,操作失败! ");
  220. return PosBizControlConstants.SUCCESS;
  221. }
  222. if(CUR_PROG_CD == null)CUR_PROG_CD = "JJB";
  223. if(CUR_PROG_CD.equals("RBB") || CUR_PROG_CD.equals("RGF")|| CUR_PROG_CD.equals("RGC") || CUR_PROG_CD.equals("RCB") ) {
  224. context.put("MESSAGES",CUR_PROG_CD + "已经编制轧制计划,需吊轧制吊销才能修改,操作失败!");
  225. return PosBizControlConstants.SUCCESS;
  226. }
  227. //过渡坯
  228. if(endDifStlGrdYn[i].equals("Y")){
  229. ED_DIFF_STL_GRD_STA_END_YN1 = "2";
  230. }
  231. //头尾坯
  232. if(twSlabYn != null &&("1".equals(twSlabYn[i])||"2".equals(twSlabYn[i]))){
  233. CUR_PROG_CD = "RAB";
  234. HcrClf = "C";
  235. }
  236. //尺寸等级修改
  237. if(!(SlabSizeDec[i] == null || SlabSizeDec[i].equals(""))){
  238. SLAB_SIZE_DEC_GRD = SlabSizeDec[i];
  239. }
  240. BigDecimal Wgt = new BigDecimal(SlabWgt[i]);
  241. if(SlabRt == null){
  242. return PosBizControlConstants.SUCCESS;
  243. }
  244. //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09----------------------
  245. if ("1".equals(ordFl)){
  246. String RtnSizeDec = SlabSizeDec(SlabRt,new BigDecimal(SlabThk[i]),new BigDecimal(SlabWth[i]),new BigDecimal(SlabLen[i]),ChargeNo[0]+ subSlabNo[i],EdPlanSLabNo,Wgt);
  247. if (RtnSizeDec.equals("N")) {
  248. SLAB_SIZE_DEC_GRD = "2";
  249. }else{
  250. SLAB_SIZE_DEC_GRD = "1";
  251. }
  252. }
  253. //余材
  254. if (ordFl != null && ordFl.equals("2")){
  255. NonordCause = "1A";
  256. OrdNo = null;
  257. OrdSeq = null;
  258. }
  259. DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
  260. String currDate = formatter.format(new Date());
  261. if (RST_SLAB_CUT_DTIME == null || RST_SLAB_CUT_DTIME.equals("")){
  262. RST_SLAB_CUT_DTIME = currDate;
  263. }
  264. // 切割完成板坯位置为A0,C0垛位
  265. if (LoadLoc != null && (LoadLoc.substring(0,1).equals("L") || LoadLoc.substring(0,1).equals("Z") || LoadLoc.substring(0,1).equals("H")) ) {
  266. YardLoc = LoadLoc;
  267. LinYardLoc = LoadLoc;
  268. } else {
  269. if (CcDevNo[0] != null && CcDevNo[0].equals("J2")){
  270. YardLoc = "C0";
  271. LinYardLoc = "C0";
  272. } else {
  273. YardLoc = "A0";
  274. LinYardLoc = "A0";
  275. }
  276. }
  277. //中厚板全部降余材 挂单
  278. if(SlabRt.equals("P") || SlabRt.equals("Z")){
  279. ordFl = "2";
  280. CUR_PROG_CD = "RRC";
  281. OrdNo = "";
  282. OrdSeq = "";
  283. HcrClf = "C";
  284. }
  285. //余材 这里有问题 包括了中厚板的坯子也设置成RRC充当待机了
  286. if ((IngrDec != null && !IngrDec.equals("1")) || (SurplmatlYn[i] != null && SurplmatlYn[i].equals("S")))
  287. {
  288. /*if (SurplmatlYn[i] != null && SurplmatlYn[i].equals("S")) {
  289. NonordCause = "2D";
  290. } else {
  291. NonordCause = "2A";
  292. }
  293. HcrClf = "C";
  294. ordFl = "2";
  295. CUR_PROG_CD = "RRC";
  296. OrdNo = null;
  297. OrdSeq = null;*/
  298. if(SlabRt.equals("P") || SlabRt.equals("Z")){
  299. ordFl = "2";
  300. CUR_PROG_CD = "RRC";
  301. OrdNo = "";
  302. OrdSeq = "";
  303. HcrClf = "C";
  304. }else{
  305. CUR_PROG_CD = "RAB";
  306. HcrClf = "C";
  307. }
  308. }
  309. if(ordFl.equals("1")&&((IngrDec == null || IngrDec.equals("")) || ED_DIFF_STL_GRD_STA_END_YN1.equals("2"))){
  310. CUR_PROG_CD = "RAB";
  311. HcrClf = "C";
  312. }
  313. //中厚板坯料状态
  314. //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09----------------------
  315. if (SlabRt != null && (SlabRt.equals("P")||SlabRt.equals("Z"))){
  316. if (ordFl.equals("2")) {
  317. p_slab_status = "01";
  318. } else {
  319. p_slab_status = "05";
  320. }
  321. //如果成分不合格,返回工序计划 重新设计 中厚板对应的板坯
  322. //20221216 jiangxin 应林海要求输机时自动释放整炉板坯计划
  323. if(DSN_SLAB_NO != null){
  324. PosParameter paramV = new PosParameter();
  325. paramV.setWhereClauseParameter(0,p_slab_status);
  326. paramV.setWhereClauseParameter(1,EdPlanSLabNo/*DSN_SLAB_NO*/);
  327. this.getDao("mesdao").update("NIG020610_TBD01_SLABDN.update", paramV);
  328. paramV = new PosParameter();
  329. paramV.setWhereClauseParameter(0,ChargeNo[0] + SlabNo[i]);
  330. this.getDao("mesdao").update("NIG020610_TBD01_DSN_SLABNO.update", paramV);
  331. }
  332. }
  333. //如果是热轧材
  334. //--------------------------------------中厚板坯料尺寸判定增加 MODY BY WXY------2011-03-09----------------------
  335. if (!(SlabRt.equals("P")||SlabRt.equals("Z"))) {
  336. //余材
  337. if ((ordFl != null && ordFl.equals("2")) ){
  338. CUR_PROG_CD = "RRC";
  339. OrdNo = null;
  340. OrdSeq = null;
  341. // 尺寸不合格
  342. }else if(SLAB_SIZE_DEC_GRD != null && SLAB_SIZE_DEC_GRD.equals("2")){
  343. HcrClf = "C";
  344. ordFl = "2";
  345. CUR_PROG_CD = "RRC";
  346. OrdNo = null;
  347. OrdSeq = null;
  348. NonordCause = "3B";
  349. }
  350. else if(OrdNo.substring(0, 1).equals("7"))//坯料外销 20180809
  351. {
  352. CUR_PROG_CD = "RFA"; //板坯发货指示待机
  353. }
  354. //热送
  355. else if((HcrClf != null && HcrClf.equals("H") && MILL_FL.equals("Y"))&& !CUR_PROG_CD.equals("RAB")) {
  356. CUR_PROG_CD = "RBB";
  357. // 冷装
  358. }else if((HcrClf != null && MILL_FL.equals("N"))&&!CUR_PROG_CD.equals("RAB")) {
  359. CUR_PROG_CD = "RBA";
  360. HcrClf = "C";
  361. }
  362. }
  363. String sSlabWay = DecSlabWay(ED_SLAB_NO,HcrClf,SlabRt,sfCode);
  364. //增加降级历史记录 20101227 wxy
  365. if(ordFl.equals("2")){
  366. try{
  367. cstm = dao.getCallableStatement("ORD_HIS_INSERT.call");
  368. cstm.setString(1, "B");
  369. cstm.setString(2, "S");
  370. cstm.setString(3, "");
  371. cstm.setString(4, "UIG020060");
  372. cstm.setString(5, "");
  373. cstm.setString(6, "");
  374. cstm.setString(7, "");
  375. cstm.setString(8, ChargeNo[0] + SlabNo[i]);
  376. cstm.setString(9, "TM");
  377. cstm.setString(10, "");
  378. cstm.setString(11, "");
  379. cstm.setString(12, "");
  380. cstm.setString(13, "");
  381. cstm.execute();
  382. cstm.close();
  383. }catch(Exception ex){
  384. logger.logError(ex.getMessage(), ex);
  385. }finally{
  386. if (cstm != null)
  387. {
  388. try
  389. {
  390. cstm.close();
  391. }
  392. catch (SQLException e)
  393. {
  394. logger.logWarn(e.getMessage(), e);
  395. }
  396. }
  397. }
  398. }
  399. //end 增加降级历史记录
  400. //更新数据
  401. param = new PosParameter();
  402. param.setWhereClauseParameter(0, CUR_PROG_CD);
  403. param.setWhereClauseParameter(1, "PosSaveSlabCutting");
  404. param.setWhereClauseParameter(2, "PosSaveSlabCutting");
  405. param.setWhereClauseParameter(3, OrdNo);
  406. param.setWhereClauseParameter(4, OrdSeq);
  407. param.setWhereClauseParameter(5, ordFl);
  408. param.setWhereClauseParameter(6, SlabThk[i]);
  409. param.setWhereClauseParameter(7, SlabWth[i]);
  410. param.setWhereClauseParameter(8, SlabLen[i]);
  411. param.setWhereClauseParameter(9, SlabWgt[i]);
  412. param.setWhereClauseParameter(10, HcrClf);
  413. param.setWhereClauseParameter(11, sSlabWay);
  414. param.setWhereClauseParameter(12, SlabRt);
  415. param.setWhereClauseParameter(13, LastCutYn[i]);
  416. param.setWhereClauseParameter(14, ShiftCd[0]);
  417. param.setWhereClauseParameter(15, WkGroup[0]);
  418. param.setWhereClauseParameter(16, RegId[0]);
  419. param.setWhereClauseParameter(17, SurplmatlYn[i]);
  420. param.setWhereClauseParameter(18, YardLoc);
  421. param.setWhereClauseParameter(19, SLAB_SIZE_DEC_GRD);
  422. param.setWhereClauseParameter(20, ED_DIFF_STL_GRD_STA_END_YN1);
  423. param.setWhereClauseParameter(21, CcDevNo[0]);
  424. param.setWhereClauseParameter(22, strandNo[i]);
  425. param.setWhereClauseParameter(23, NonordCause);
  426. param.setWhereClauseParameter(24, twSlabYn[i]);
  427. param.setWhereClauseParameter(25, ChargeNo[0] + SlabNo[i]);
  428. param.setWhereClauseParameter(26, ChargeNo[0] + SlabNo[i]);
  429. getDao("mesdao").update("UIG020060_01.update", param);
  430. //写入报表数据
  431. getDao("mesdao").update("UIG020060_report.insert", param);
  432. param = new PosParameter();
  433. param.setValueParamter(0, ordFl);
  434. param.setValueParamter(1, OrdNo);
  435. param.setValueParamter(2, OrdSeq);
  436. param.setValueParamter(3, ChargeNo[0] + SlabNo[i]);
  437. this.getDao("mesdao").update("UIG020060_SLAB_COMM_D_02.update",param);
  438. //因现场会新增板坯,导致产出数据重复,因此加入下列判断
  439. //板坯信息
  440. String sql1 = "SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY REFNOA ORDER BY T.CREATETIME DESC) RN,"
  441. +" T.* FROM MATAL_DETAIL_ACCOUNTING T where INVID = ? and ACTIVITYID = '11A' AND CRNTMILL = 'LGX') WHERE RN = 1";
  442. param = new PosParameter();
  443. param.setWhereClauseParameter(0, ED_SLAB_NO);
  444. rowset = dao.findByQueryStatement(sql1, param);
  445. if (rowset.hasNext())//代表重复录入,则新增一条撤回的信息
  446. {
  447. row = rowset.next();
  448. String flag = (String)row.getAttribute("EXECJOBFUNC");//现场有可能做完清空流号后再录入板坯,需要加入对11A最新一条数据的判断
  449. if(!"D".equals(flag)){//是D则代表是清空流号删除的实绩,就直接录入新实绩,不是D则需要新增先录入一条撤销
  450. //财务数据上抛
  451. try
  452. {
  453. cstm = dao.getCallableStatement("UPLOAD_DATA.CAL");
  454. cstm.setString(1, ED_SLAB_NO);
  455. cstm.setString(2, "11A");
  456. cstm.setString(3, "D");
  457. cstm.setString(4, "板坯切割实绩录入撤销");
  458. cstm.setString(5, RegId[0]);
  459. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  460. cstm.execute();
  461. cstm.close();
  462. }catch(Exception ex){
  463. ex.printStackTrace();
  464. logger.logError(ex.getMessage(), ex);
  465. }
  466. finally{
  467. if(cstm != null){
  468. try{
  469. cstm.close();
  470. }catch(Exception e){
  471. e.printStackTrace();
  472. }
  473. }
  474. }
  475. }
  476. }
  477. if (NonordCause != null) {
  478. BefOrdNo = OrdNo;
  479. BefOrdSeq = OrdSeq;
  480. }
  481. // CCM NO set to Charge Master table
  482. param = new PosParameter();
  483. //2012.12.14 更改连铸机号获取方式
  484. param.setWhereClauseParameter(0, ChargeNo[0]);
  485. String ccDrvNoSql = "SELECT 'J'||SUBSTR(X.CC_DEVNO,2,1 ) CC_DEVNO FROM TBG06_L2_CHARGE_DEVNO X WHERE X.MSG_FLAG = 'N' AND X.CHARGE_NO = ?";
  486. rowset = this.getDao("mesdao").findByQueryStatement(ccDrvNoSql, param);
  487. param = new PosParameter();
  488. if(rowset.hasNext())
  489. {
  490. row = rowset.next();
  491. param.setValueParamter(0, row.getAttribute("CC_DEVNO"));
  492. param.setValueParamter(1, row.getAttribute("CC_DEVNO"));
  493. param.setValueParamter(2, ChargeNo[0] );
  494. this.getDao("mesdao").update("UIG020060_CH_COM.update", param);
  495. // String ccDrvNoSql_1 = "UPDATE TBG06_L2_CHARGE_DEVNO T SET T.MSG_FLAG = 'C' WHERE T.MSG_FLAG = 'N' AND T.CHARGE_NO = ?";
  496. param = new PosParameter();
  497. param.setValueParamter(0, ChargeNo[0]);
  498. this.getDao("mesdao").update("UIG020060_charge_ccdevno_06.update" ,param);
  499. }
  500. else
  501. {
  502. param.setValueParamter(0, CcDevNo[0]);
  503. param.setValueParamter(1, CcDevNo[0]);
  504. param.setValueParamter(2, ChargeNo[0] );
  505. this.getDao("mesdao").update("UIG020060_CH_COM.update", param);
  506. }
  507. if ( !SurplmatlYn[i].equals("S")) {
  508. SendProg_NIE012070( ED_SLAB_NO,OrdNo,OrdSeq,BefOrdNo,BefOrdSeq ,CUR_PROG_CD,"","TM",SlabWgt[i]);
  509. SendProg_NIE012080();
  510. }
  511. String RejKind = null;
  512. // Mill Scheduling slab check and 'H'->'C' check and send to Mill Scheduling reject request
  513. /*if (MILL_FL != null && MILL_FL.equals("Y")&&!(SurplmatlYn[i].equals("S"))&& STATUS_CD.equals("B")) {
  514. if (SLAB_SIZE_DEC_GRD.equals("2")){
  515. RejKind = "Z";
  516. SendProg_NIF024060( ED_SLAB_NO,RejKind);
  517. } else if (IngrDec == null ||(IngrDec != null && IngrDec.equals("2")) || (HcrClf.equals("H") && HcrClf.equals("C"))) {
  518. RejKind = "M";
  519. SendProg_NIF024060( ED_SLAB_NO,RejKind);
  520. }
  521. }*/
  522. //板坯计划信息结束
  523. xtbgcomm.specSlabProcUpt(PlanSlabNo[i], "C");
  524. if(PR_CHARGE_WGT == null)PR_CHARGE_WGT = "0";
  525. if (SurplmatlYn[i] == null || SurplmatlYn[i].equals("") ) {
  526. SendProg_NIE012070( PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT );
  527. }
  528. /*炉次结束终止炉次
  529. String chargcomm = "SELECT STATUS_CD FROM TBF01_CHARGE_IDX WHERE CHARGE_MANA_NO = '3'||SUBSTR(?,2,8)||'A' ";
  530. param = new PosParameter();
  531. param.setWhereClauseParameter(0, ChargeNo[0]);
  532. rowset = getDao("mesdao").findByQueryStatement(chargcomm, param);
  533. if(rowset.hasNext())
  534. {
  535. row = rowset.next();
  536. String status_cd = (String)row.getAttribute("STATUS_CD");
  537. if(!"C".equals(status_cd)){
  538. if(SurplmatlYn[i].equals("S")){
  539. LastSlabCut(ChargeNo[0] + SlabNo[i],"J01-00000A900",MILL_FL,SlabRt,DSN_SLAB_NO);
  540. }else{
  541. LastSlabCut(ChargeNo[0] + SlabNo[i],PlanSlabNo[i],MILL_FL,SlabRt,DSN_SLAB_NO);
  542. }
  543. SendProg_NIE012070(PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT );
  544. }
  545. }*/
  546. //炉次结束终止炉次
  547. if (LastCutYn[i] != null && LastCutYn[i].equals("E")) {
  548. if(SurplmatlYn[i].equals("S")){
  549. LastSlabCut(ChargeNo[0] + SlabNo[i],"J01-00000A900",MILL_FL,SlabRt,DSN_SLAB_NO);
  550. }else{
  551. LastSlabCut(ChargeNo[0] + SlabNo[i],PlanSlabNo[i],MILL_FL,SlabRt,DSN_SLAB_NO);
  552. }
  553. SendProg_NIE012070(PlanSlabNo[i].substring(0,10),"","","","" ,"JJB",PR_BEF_PROG_CD,"CH",PR_CHARGE_WGT );
  554. }
  555. SendProg_NIE012080();
  556. // The cutting slab set roller table yard map
  557. // MC1 --> 'A0' , MC2--> 'C0'
  558. // After shift roller table exist slab the cutting slab set first roller table for example 'A001'
  559. if (LinYardLoc != null && (LinYardLoc.equals("A0") || LinYardLoc.equals("C0"))) {
  560. PosParameter param13 = new PosParameter();
  561. param13.setWhereClauseParameter(0, ED_SLAB_NO);
  562. param13.setWhereClauseParameter(1, LinYardLoc);
  563. PosRowSet slabExistVo = getDao("mesdao").find("NIG020610_YARD_SLAB_EXIST.select", param13);
  564. if (!slabExistVo.hasNext()) {
  565. PosParameter param15 = new PosParameter();
  566. param15.setWhereClauseParameter(0, LinYardLoc);
  567. param15.setWhereClauseParameter(1, ED_SLAB_NO);
  568. PosRowSet YardMapVo = getDao("mesdao").find("NIG020610_YARD.select", param15);
  569. while (YardMapVo.hasNext()) {
  570. PosRow YardMapROW = YardMapVo.next();
  571. String YARD_ADDR = (String) YardMapROW.getAttribute("YARD_ADDR");
  572. String YARD_LAY = (String) YardMapROW.getAttribute("YARD_LAY");
  573. String SLAB_NO = (String) YardMapROW.getAttribute("SLAB_NO");
  574. String LINE_ADDR = YARD_ADDR + YARD_LAY;
  575. PosParameter param16 = new PosParameter();
  576. param16.setValueParamter(0, SLAB_NO);
  577. param16.setValueParamter(1, LINE_ADDR);
  578. this.getDao("mesdao").update("NIG020610_YARD.update", param16);
  579. }
  580. String UpdLoc = YardLoc + "01";
  581. PosParameter param14 = new PosParameter();
  582. param14.setValueParamter(0, ED_SLAB_NO);
  583. param14.setValueParamter(1, UpdLoc);
  584. this.getDao("mesdao").update("NIG020610_YARD.update",param14);
  585. }
  586. }
  587. //更新热装热送的轧制计划的板坯号(只执行一次) 20240427
  588. if(i == status.length - 1){
  589. try
  590. {
  591. cstm = dao.getCallableStatement("HCR_SLABNO_UPD.CAL");
  592. cstm.setString(1, ChargeNo[0].substring(0,9));
  593. cstm.execute();
  594. cstm.close();
  595. }catch(Exception ex){
  596. ex.printStackTrace();
  597. logger.logError(ex.getMessage(), ex);
  598. }
  599. finally{
  600. if(cstm != null){
  601. try{
  602. cstm.close();
  603. }catch(Exception e){
  604. e.printStackTrace();
  605. }
  606. }
  607. }
  608. }
  609. //财务数据上抛
  610. try
  611. {
  612. cstm = dao.getCallableStatement("UPLOAD_DATA.CAL");
  613. cstm.setString(1, ED_SLAB_NO);
  614. cstm.setString(2, "11A");
  615. cstm.setString(3, "N");
  616. cstm.setString(4, "板坯切割实绩录入");
  617. cstm.setString(5, RegId[0]);
  618. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  619. cstm.execute();
  620. cstm.close();
  621. }catch(Exception ex){
  622. ex.printStackTrace();
  623. logger.logError(ex.getMessage(), ex);
  624. }
  625. finally{
  626. if(cstm != null){
  627. try{
  628. cstm.close();
  629. }catch(Exception e){
  630. e.printStackTrace();
  631. }
  632. }
  633. }
  634. }
  635. }
  636. context.put("MESSAGES","操作成功!");
  637. return PosBizControlConstants.SUCCESS;
  638. }
  639. public String getSubSlabNo(PosContext context,String slabNo,String strandNo){
  640. String subSlabNo = null;
  641. if(strandNo == null || strandNo.equals("")){
  642. context.put("MESSAGES",slabNo + " 缺少板坯流号,操作失败! ");
  643. return PosBizControlConstants.SUCCESS;
  644. }
  645. PosParameter param = new PosParameter();
  646. param.setWhereClauseParameter(0, slabNo);
  647. param.setWhereClauseParameter(1, strandNo);
  648. PosRowSet rowset = this.getDao("mesdao").find("", param);
  649. if(rowset.hasNext()){
  650. PosRow row = rowset.next();
  651. }
  652. return subSlabNo;
  653. }
  654. public void LastSlabCut(String SlabNo,String PlanSlabNo,String MillFl,String SlabRt,String DsnSlabNo)
  655. {
  656. PosParameter param9 = new PosParameter();
  657. param9.setValueParamter(0, "C" );
  658. param9.setValueParamter(1, "JJB" );
  659. param9.setValueParamter(2, "3" + SlabNo.substring(1,10));
  660. this.getDao("mesdao").update("NIG020610_SPEC_CHARGE.update", param9);
  661. PosParameter param10 = new PosParameter();
  662. param10.setValueParamter(0, "C" );
  663. param10.setValueParamter(1, "3" + SlabNo.substring(1,10));
  664. this.getDao("mesdao").update("NIG020610_SPEC_CHARGE_IDX.update", param10);
  665. PosParameter param11 = new PosParameter();
  666. param11.setValueParamter(0, "3" );
  667. param11.setValueParamter(1, "JJB" );
  668. param11.setValueParamter(2, "CCM_CUT" );
  669. param11.setValueParamter(3, SlabNo.substring(0,10) );
  670. this.getDao("mesdao").update("NIG020610_CHARGE_COMM.update", param11);
  671. param11 = new PosParameter();
  672. param11.setValueParamter(0, "3" );
  673. param11.setValueParamter(1, "JJB" );
  674. param11.setValueParamter(2, "CCM_CUT" );
  675. param11.setValueParamter(3, SlabNo.substring(0,10) );
  676. this.getDao("mesdao").update("NIG020610_CHARGE_COMM_D.update", param11);
  677. PosParameter param12 = new PosParameter();
  678. param12.setValueParamter(0, "3" );
  679. param12.setValueParamter(1, SlabNo.substring(0,10) );
  680. this.getDao("mesdao").update("NIG020610_STLMAKE_PROG.update", param12);
  681. // if slab cutting result less than slab schedule then reminding schedule should be finished
  682. PosParameter paramB = new PosParameter();
  683. paramB.setWhereClauseParameter(0, "3" + SlabNo.substring(1,10));
  684. PosRowSet LastSlabVo = getDao("mesdao").find("NIG020610_SPEC_LAST_SLAB.select", paramB);
  685. if (LastSlabVo.hasNext() ) {
  686. PosRow LastSlabROW = LastSlabVo.next();
  687. String SLAB_EDIT_NO = (String)LastSlabROW.getAttribute("SLAB_EDIT_NO");
  688. if ( PlanSlabNo.substring(10,13).compareTo(SLAB_EDIT_NO) < 0) {
  689. PosParameter paramC = new PosParameter();
  690. paramC.setWhereClauseParameter(0, SlabNo);
  691. paramC.setWhereClauseParameter(1, PlanSlabNo);
  692. PosRowSet remSlabVo = getDao("mesdao").find("NIG020610_REM_SLAB.select", paramC);
  693. while(remSlabVo.hasNext()) {
  694. PosRow remSlabROW = remSlabVo.next();
  695. String RemSlabNo = (String)remSlabROW.getAttribute("SLAB_NO");
  696. String RemPlnSlabNo = (String)remSlabROW.getAttribute("PLAN_SLAB_NO");
  697. String RemDsnSlabNo = (String)remSlabROW.getAttribute("DSN_SLAB_NO");
  698. String ordNo = (String)remSlabROW.getAttribute("ORD_NO");
  699. String ordSeq = (String)remSlabROW.getAttribute("ORD_SEQ");
  700. String ordCustCD = (String)remSlabROW.getAttribute("ORDCUST_CD");
  701. //增加降级历史记录 20101227 wxy
  702. //增加降级历史记录 20101227 wxy
  703. CallableStatement cstm = null;
  704. PosParameter param = new PosParameter();
  705. try{
  706. cstm = this.getDao("mesdao").getCallableStatement("ORD_HIS_INSERT.call");
  707. cstm.setString(1, "B");
  708. cstm.setString(2, "S");
  709. cstm.setString(3, "");
  710. cstm.setString(4, "UIG020060");
  711. cstm.setString(5, "");
  712. cstm.setString(6, "");
  713. cstm.setString(7, "");
  714. cstm.setString(8, RemSlabNo);
  715. cstm.setString(9, "TM");
  716. cstm.setString(10, "");
  717. cstm.setString(11, "");
  718. cstm.setString(12, "");
  719. cstm.setString(13, "");
  720. cstm.execute();
  721. }catch(Exception ex){
  722. logger.logError(ex.getMessage(), ex);
  723. }finally{
  724. if (cstm != null)
  725. {
  726. try
  727. {
  728. cstm.close();
  729. }
  730. catch (SQLException e)
  731. {
  732. logger.logWarn(e.getMessage(), e);
  733. }
  734. }
  735. }
  736. //end 增加降级历史记录
  737. PosParameter param13 = new PosParameter();
  738. param13.setValueParamter(0, "5" );
  739. param13.setValueParamter(1, "3" );
  740. param13.setValueParamter(2, RemSlabNo );
  741. this.getDao("mesdao").update("NIG020610_SLAB_END.update", param13);
  742. param13 = new PosParameter();
  743. param13.setWhereClauseParameter(0, RemSlabNo);
  744. this.getDao("mesdao").update("NIG020610_SLAB_END_D.update",param13);
  745. try{
  746. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  747. cstm.setString(1, RemSlabNo);
  748. cstm.setString(2, "11A");
  749. cstm.setString(3, "D");
  750. cstm.setString(4, "板坯强制结束");
  751. cstm.setString(5, "LastSlabCut");
  752. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  753. cstm.execute();
  754. String err = cstm.getString(6);
  755. String er1 = "";
  756. }catch (Exception e) {
  757. // TODO: handle exception
  758. }finally{
  759. if (cstm != null){
  760. try{
  761. cstm.close();
  762. }
  763. catch (SQLException e){
  764. logger.logWarn(e.getMessage(), e);
  765. }
  766. }
  767. }
  768. /*if (MillFl != null && MillFl.equals("Y") ) {
  769. SendProg_NIF024060( RemSlabNo,"M");
  770. }*/
  771. PosParameter paramD = new PosParameter();
  772. paramD.setWhereClauseParameter(0, RemPlnSlabNo );
  773. PosRowSet remSpecVo = getDao("mesdao").find("NIG020610_SLAB_SPEC.select", paramD);
  774. while (remSpecVo.hasNext() ){
  775. PosRow remSpecROW = remSpecVo.next();
  776. Number nSlabEdtSeq = (Number)remSpecROW.getAttribute("SLAB_EDT_SEQ");
  777. String SlabManaNo = (String)remSpecROW.getAttribute("SLAB_MANA_NO");
  778. PosParameter paramE = new PosParameter();
  779. paramE.setValueParamter(0, "C" );
  780. paramE.setValueParamter(1, SlabManaNo );
  781. this.getDao("mesdao").update("NIG020610_SPEC_SLAB.update", paramE);
  782. PosParameter paramF = new PosParameter();
  783. paramF.setValueParamter(0, "C" );
  784. paramF.setValueParamter(1, nSlabEdtSeq );
  785. this.getDao("mesdao").update("NIG020610_SPEC_SLAB_D.update", paramF);
  786. }
  787. if (SlabRt.equals("P") || SlabRt.equals("Z") ) {
  788. PosParameter paramV = new PosParameter();
  789. paramV.setWhereClauseParameter(0,"01");
  790. paramV.setWhereClauseParameter(1,RemDsnSlabNo);
  791. this.getDao("mesdao").update("NIG020610_TBD01_SLABDN.update", paramV);
  792. }
  793. }
  794. }
  795. }
  796. }
  797. public String DecSlabWay(String Slabno,String hcrcd,String slabway,String sf)
  798. {
  799. logger.logInfo("PosSaveSlabCutting---> DecSlabWay" );
  800. String way = null;
  801. if (hcrcd != null && hcrcd.equals("C") ) {
  802. if ( (sf != null && sf.equals("Y")) || (slabway != null && slabway.equals("P"))) {
  803. way = "1";
  804. } else {
  805. way = "2";
  806. }
  807. } else {
  808. way = "3";
  809. }
  810. return way;
  811. }
  812. public String DiffStlGrd(String chargeNo, String McNo,String StlGrd)
  813. {
  814. String Get_StlGrd = null;
  815. PosParameter param3 = new PosParameter();
  816. param3.setWhereClauseParameter(0, chargeNo);
  817. param3.setWhereClauseParameter(1, McNo);
  818. param3.setWhereClauseParameter(2, chargeNo);
  819. PosRowSet DiffStlGrdVO = getDao("mesdao").find("NIG020610_DIFF_STL_GRD.select", param3);
  820. while ( DiffStlGrdVO.hasNext()) {
  821. PosRow DiffStlGrdROW = DiffStlGrdVO.next();
  822. Get_StlGrd = (String)DiffStlGrdROW.getAttribute("STL_GRD");
  823. if ( Get_StlGrd != null && StlGrd != null ) {
  824. if (!StlGrd.equals(Get_StlGrd) ) {
  825. return Get_StlGrd;
  826. }
  827. return null;
  828. }
  829. }
  830. return null;
  831. }
  832. // SLAB SIZE DECISION ( RESULT SLAB WGT,ORDER WGT COMPARE)
  833. // TBG02_SLAB_COMM--> SLAB_WGT
  834. // TBG02_SLAB_COMM_D --> ORD_NO,ORD_SEQ
  835. // TBA01_ORD_LINE --> PROD_WGT_MIN,PROD_WGT_MAX
  836. // public String SlabSizeDec(BigDecimal slabThk,BigDecimal slabWth,BigDecimal slabLen,String SlabNo, String PlanSlabNo,BigDecimal SlabWgt)
  837. // {
  838. //
  839. // logger.logInfo("XinSaveSlabComm SlabWgt:"+SlabWgt);
  840. // BigDecimal SlabThk = slabThk;
  841. // BigDecimal SlabWth = slabWth;
  842. // BigDecimal SlabLen = slabLen;
  843. // BigDecimal ordLen = new BigDecimal(0);
  844. // BigDecimal ordWgt = new BigDecimal(0);
  845. // BigDecimal coilOutDia = new BigDecimal(0);
  846. // BigDecimal coilInDia = new BigDecimal(0);
  847. //
  848. //
  849. // BigDecimal ordThk = new BigDecimal(0);
  850. // BigDecimal ordWth = new BigDecimal(0);
  851. // BigDecimal coilThk = new BigDecimal(0);
  852. // BigDecimal coilWth = new BigDecimal(0);
  853. //
  854. // PosParameter param1 = new PosParameter();
  855. // param1.setWhereClauseParameter(0, SlabNo);
  856. // PosRowSet CommDVO = getDao("mesdao").find("NIG020610_SLAB_COMM_D.select", param1);
  857. // PosRowSet CommDVO2 = getDao("mesdao").find("UIG020060_SLAB_COMMD_ORD.select",param1);
  858. //
  859. // if(CommDVO2.hasNext()){
  860. // PosRow row = CommDVO2.next();
  861. // ordThk = (BigDecimal)row.getAttribute("SLAB_THK");
  862. // ordWth = (BigDecimal)row.getAttribute("SLAB_WTH");
  863. // coilThk = (BigDecimal)row.getAttribute("ORD_THK");
  864. // coilWth = (BigDecimal)row.getAttribute("ORD_WTH");
  865. //
  866. // coilInDia = (BigDecimal)row.getAttribute("COIL_INDIA");
  867. // }
  868. // BigDecimal total = ordWth.add(new BigDecimal(100));
  869. // if(SlabWth.compareTo(ordWth) < 0||total.compareTo(SlabWth) < 0){
  870. // return "N";
  871. // }
  872. //
  873. // param1 = new PosParameter();
  874. // PosRowSet rateVo = getDao("mesdao").find("UIG020060_proc_rate.select", param1);
  875. // BigDecimal procRate = new BigDecimal(1);
  876. // if(rateVo.hasNext()){
  877. // PosRow posrow = rateVo.next();
  878. // procRate = (BigDecimal)posrow.getAttribute("PROC_RATE");
  879. // }
  880. // if ( CommDVO.hasNext()) {
  881. //
  882. // PosRow CommDROW = CommDVO.next();
  883. //
  884. // BigDecimal PROD_WGT_MIN = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MIN");
  885. // BigDecimal PROD_WGT_MAX = (BigDecimal)CommDROW.getAttribute("PROD_WGT_MAX");
  886. //
  887. // logger.logInfo("XinSaveSlabComm PROD_WGT_MIN:"+PROD_WGT_MIN);
  888. //
  889. // logger.logInfo(PROD_WGT_MIN);
  890. // logger.logInfo(PROD_WGT_MAX);
  891. // ordWgt = SlabWgt.multiply(procRate);
  892. // ordWgt = ordWgt.divide(new BigDecimal(100));
  893. // logger.logInfo("XinSaveSlabComm ordWgt:"+ ordWgt);
  894. // if(PROD_WGT_MIN == null)PROD_WGT_MIN = new BigDecimal(0);
  895. // if(PROD_WGT_MAX == null)PROD_WGT_MAX = new BigDecimal(0);
  896. // //如果板坯重量不在订单重量范围内
  897. // if (ordWgt.compareTo(PROD_WGT_MIN) < 0 || PROD_WGT_MAX.compareTo(ordWgt) < 0 ) {
  898. // //取消订单
  899. // return "N";
  900. //
  901. // }
  902. // }
  903. // logger.logInfo("ordWgt=" + ordWgt );
  904. // logger.logInfo("ordThk=" + ordThk );
  905. // logger.logInfo("SlabWth=" + SlabWth );
  906. // ordLen = ordWgt.multiply(new BigDecimal(1000000));
  907. // ordLen = ordLen.divide(coilThk,3,BigDecimal.ROUND_HALF_UP);
  908. // ordLen = ordLen.divide(coilWth,3,BigDecimal.ROUND_HALF_UP);
  909. // ordLen = ordLen.divide(new BigDecimal(7.8),0,BigDecimal.ROUND_HALF_UP);
  910. //
  911. // 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()));
  912. // logger.logInfo("-------------slabThk" + slabThk + "--slabWth" + slabWth + "--slabLen" + slabLen + "--ordLen" + ordLen + "--ordWgt" + ordWgt + "--coilOutDia" + coilOutDia + "--" );
  913. // param1 = new PosParameter();
  914. // param1.setWhereClauseParameter(0,slabThk);
  915. // param1.setWhereClauseParameter(1,slabWth);
  916. // param1.setWhereClauseParameter(2,slabLen);
  917. // param1.setWhereClauseParameter(3,ordLen);
  918. // param1.setWhereClauseParameter(4,ordWgt);
  919. // param1.setWhereClauseParameter(5,coilOutDia);
  920. // param1.setWhereClauseParameter(6,SlabNo);
  921. // int rowset = getDao("mesdao").update("UIG020060_slab_comm_d.update",param1);
  922. // return "Y";
  923. // }
  924. public String SendProg_NIE012070(String MatNo,String sOrdNo,String sOrdSeq,String sBefOrdNo,String sBefOrdSeq,String sProgCd,String sBefProgCd,String sKind,String nwgt )
  925. {
  926. logger.logInfo("PosSaveSlabCutting---> nwgt:"+nwgt );
  927. PosContext context = new PosContext();
  928. PosMessage message = new PosMESMessageImpl();
  929. BigDecimal Wgt = new BigDecimal(nwgt);
  930. String TcId = "NIE012070";
  931. message.setTCID(TcId);
  932. message.setObject("MSG_ID",TcId);
  933. message.setObject("BEF_ORD_NO",sBefOrdNo);
  934. message.setObject("BEF_ORD_SEQ",sBefOrdSeq);
  935. message.setObject("ORD_NO",sOrdNo);
  936. message.setObject("ORD_SEQ",sOrdSeq);
  937. message.setObject("BEF_PROG_CD",sBefProgCd);
  938. message.setObject("PROG_CD",sProgCd);
  939. message.setObject("MAT_TYPE",sKind);
  940. message.setObject("MAT_NO",MatNo);
  941. message.setObject("WGT", Wgt );
  942. message.setObject("PGMID","PosSaveSlabCutting");
  943. message.setObject("REG_ID","UIG020060");
  944. context.setMessage(message);
  945. message.setTCID(TcId);
  946. String SERVICE_POSTFIX = "-service";
  947. context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX);
  948. PosBizProvider.getController().doSubController(context, false);
  949. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  950. logger.logInfo("PosSaveSlabCutting SendProg_NIE012070 SERVICE_ERR_MSG:"+SERVICE_ERR_MSG );
  951. if (SERVICE_ERR_MSG != null)
  952. {
  953. throw new PosException(SERVICE_ERR_MSG);
  954. }
  955. return null;
  956. }
  957. public String SendProg_NIE012080()
  958. {
  959. PosContext context = new PosContext();
  960. PosMessage message = new PosMESMessageImpl();
  961. String TcId = "NIE012080";
  962. message.setTCID(TcId);
  963. message.setObject("MSG_ID",TcId);
  964. message.setObject("AA",null);
  965. context.setMessage(message);
  966. message.setTCID(TcId);
  967. String SERVICE_POSTFIX = "-service";
  968. context.put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX);
  969. PosBizProvider.getController().doSubController(context, false);
  970. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  971. logger.logInfo("PosSaveSlabCutting SendProg_NIE012080 SERVICE_ERR_MSG:"+SERVICE_ERR_MSG );
  972. if (SERVICE_ERR_MSG != null)
  973. {
  974. throw new PosException(SERVICE_ERR_MSG);
  975. }
  976. return null;
  977. }
  978. // call mill scheduling reject service class
  979. public void SendProg_NIF024060(String SlabNo,String RejType )
  980. {
  981. logger.logInfo("PosSaveMissionNo SendProg_NIF024060 " );
  982. PosContext context = new PosContext();
  983. PosMessage message = new PosMESMessageImpl();
  984. String TcId = "NIF024060";
  985. message.setTCID(TcId);
  986. message.setObject("MSG_ID",TcId);
  987. message.setObject("TYPE",RejType);
  988. message.setObject("FROM",SlabNo);
  989. message.setObject("TO",SlabNo);
  990. message.setObject("REG_ID","UIG020060");
  991. context.setMessage(message);
  992. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  993. String transactionCode = context.getMessage().getTC();
  994. message.setTCID(TcId);
  995. String serviceName = "NIF024060";
  996. String SERVICE_POSTFIX = "-service";
  997. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  998. context.setMessage(message);
  999. PosBizControlIF controller = PosBizProvider.getController();
  1000. controller.doSubController(context,false);
  1001. }
  1002. public String SlabSizeDec(String slabRt,BigDecimal slabThk, BigDecimal slabWth,
  1003. BigDecimal slabLen, String SlabNo, String PlanSlabNo,
  1004. BigDecimal SlabWgt) {
  1005. logger.logInfo("XinSaveSlabComm SlabWgt:" + SlabWgt);
  1006. BigDecimal SlabThk = slabThk;
  1007. BigDecimal SlabWth = slabWth;
  1008. BigDecimal SlabLen = slabLen;
  1009. BigDecimal ordThk = new BigDecimal(0);
  1010. BigDecimal ordWth = new BigDecimal(0);
  1011. BigDecimal ordLen = new BigDecimal(0);
  1012. BigDecimal ordWgt = new BigDecimal(0);
  1013. BigDecimal coilOutDia = new BigDecimal(0);
  1014. BigDecimal coilInDia = new BigDecimal(0);
  1015. if(slabRt.equals("Z")||slabRt.equals("P")){
  1016. //---
  1017. return "N";
  1018. //--------------------------中厚板移送的板坯规格如何判定??
  1019. }else if(slabRt.equals("H")){
  1020. PosParameter param1 = new PosParameter();
  1021. param1.setWhereClauseParameter(0, SlabNo);
  1022. PosRowSet CommDVO = getDao("mesdao").find(
  1023. "NIG020610_SLAB_COMM_D.select", param1);
  1024. PosRowSet CommDVO2 = getDao("mesdao").find(
  1025. "UIG020060_SLAB_COMMD_ORD.select", param1);
  1026. if (CommDVO2.hasNext()) {
  1027. PosRow row = CommDVO2.next();
  1028. ordThk = (BigDecimal) row.getAttribute("ORD_THK");
  1029. ordWth = (BigDecimal) row.getAttribute("ORD_WTH");
  1030. coilInDia = (BigDecimal) row.getAttribute("COIL_INDIA");
  1031. }
  1032. //板坯宽度 < 订单宽度 或者 板坯宽度 > 订单宽度+100 则 尺寸不合格
  1033. BigDecimal total = ordWth.add(new BigDecimal(100));
  1034. if (SlabWth.compareTo(ordWth) < 0 || total.compareTo(SlabWth) < 0) {
  1035. return "N";
  1036. }
  1037. param1 = new PosParameter();
  1038. PosRowSet rateVo = getDao("mesdao").find("UIG020060_proc_rate.select",
  1039. param1);
  1040. BigDecimal procRate = new BigDecimal(1);
  1041. if (rateVo.hasNext()) {
  1042. PosRow posrow = rateVo.next();
  1043. procRate = (BigDecimal) posrow.getAttribute("PROC_RATE");
  1044. }
  1045. if (CommDVO.hasNext()) {
  1046. PosRow CommDROW = CommDVO.next();
  1047. BigDecimal PROD_WGT_MIN = (BigDecimal) CommDROW
  1048. .getAttribute("PROD_WGT_MIN");
  1049. BigDecimal PROD_WGT_MAX = (BigDecimal) CommDROW
  1050. .getAttribute("PROD_WGT_MAX");
  1051. logger.logInfo("XinSaveSlabComm PROD_WGT_MIN:" + PROD_WGT_MIN);
  1052. logger.logInfo(PROD_WGT_MIN);
  1053. logger.logInfo(PROD_WGT_MAX);
  1054. ordWgt = SlabWgt.multiply(procRate);
  1055. ordWgt = ordWgt.divide(new BigDecimal(100));
  1056. logger.logInfo("XinSaveSlabComm ordWgt:" + ordWgt);
  1057. if (PROD_WGT_MIN == null)
  1058. PROD_WGT_MIN = new BigDecimal(0);
  1059. if (PROD_WGT_MAX == null)
  1060. PROD_WGT_MAX = new BigDecimal(300000);
  1061. // 如果板坯重量不在订单重量范围内
  1062. if (ordWgt.compareTo(PROD_WGT_MIN) < 0
  1063. || PROD_WGT_MAX.compareTo(ordWgt) < 0) {
  1064. // 取消订单
  1065. return "N";
  1066. }
  1067. }
  1068. logger.logInfo("ordWgt=" + ordWgt);
  1069. logger.logInfo("ordThk=" + ordThk);
  1070. logger.logInfo("SlabWth=" + SlabWth);
  1071. ordLen = ordWgt.multiply(new BigDecimal(1000000));
  1072. ordLen = ordLen.divide(ordThk, 3, BigDecimal.ROUND_HALF_UP);
  1073. ordLen = ordLen.divide(ordWth, 3, BigDecimal.ROUND_HALF_UP);
  1074. ordLen = ordLen.divide(new BigDecimal(7.85), 0,BigDecimal.ROUND_HALF_UP);
  1075. coilOutDia = new BigDecimal(Math.sqrt(ordWgt.multiply(
  1076. new BigDecimal(1000000).multiply(new BigDecimal(4)).divide(
  1077. new BigDecimal(7.85 * 3.14 * 0.98), 3,
  1078. BigDecimal.ROUND_HALF_UP).divide(ordWth, 0,
  1079. BigDecimal.ROUND_HALF_UP)).add(
  1080. coilInDia.multiply(coilInDia)).doubleValue()));
  1081. param1 = new PosParameter();
  1082. param1.setWhereClauseParameter(0, slabThk);
  1083. param1.setWhereClauseParameter(1, slabWth);
  1084. param1.setWhereClauseParameter(2, slabLen);
  1085. param1.setWhereClauseParameter(3, ordLen);
  1086. param1.setWhereClauseParameter(4, ordWgt);
  1087. param1.setWhereClauseParameter(5, coilOutDia);
  1088. param1.setWhereClauseParameter(6, SlabNo);
  1089. getDao("mesdao").update("UIG020060_slab_comm_d.update",param1);
  1090. return "Y";
  1091. }
  1092. return "";
  1093. }
  1094. }