6ad1cb6e9b924740420df70240e11769fabb2990.svn-base 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. package xin.glue.ui.G.G04;
  2. import java.math.BigDecimal;
  3. import java.sql.CallableStatement;
  4. import java.sql.SQLException;
  5. import java.text.ParseException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Calendar;
  8. import org.apache.commons.lang.StringUtils;
  9. import com.posdata.glue.PosException;
  10. import com.posdata.glue.biz.activity.PosActivity;
  11. import com.posdata.glue.biz.constants.PosBizControlConstants;
  12. import com.posdata.glue.biz.control.PosBizControlIF;
  13. import com.posdata.glue.biz.control.PosBizProvider;
  14. import com.posdata.glue.component.PosConstants;
  15. import com.posdata.glue.context.PosContext;
  16. import com.posdata.glue.dao.PosGenericDao;
  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 ErrorSalbChek extends PosActivity {
  23. private PosGenericDao dao = this.getDao("mesdao");
  24. private PosParameter param = new PosParameter();
  25. private PosRowSet rowset = null;
  26. private PosRow row = null;
  27. private String PLT_TRS_EMP_NM = "";
  28. public String runActivity(PosContext context) {
  29. String[] operType = (String[]) context.get("OPER_TYPE");
  30. String[] SLAB_RTURN = (String[]) context.get("SLAB_RTURN");
  31. String[] slabNo = (String[]) context.get("SLAB_NO");
  32. String[] curProgCd = (String[]) context.get("CUR_PROG_CD");
  33. String[] chk = (String[]) context.get("CHK");
  34. String[] PLT_TRS_EMP_NM1 = (String[]) context.get("PLT_TRS_EMP_NM");
  35. PosRowSet rowset = null;
  36. PosRow row = null;
  37. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  38. PLT_TRS_EMP_NM = (PLT_TRS_EMP_NM1 == null || PLT_TRS_EMP_NM1.length == 0) ?"3qAdmin00":PLT_TRS_EMP_NM1[0];
  39. if (operType[0].equals("END")) { //END 强制结束
  40. for (int i = 0; i < slabNo.length; i++) {
  41. if (!chk[i].equals("Y"))
  42. continue;
  43. if (curProgCd[0].equals("RBB")) {
  44. context.put("MESSAGES", slabNo[i] + "已经制定轧制计划,请先取消轧制计划!");
  45. return PosBizControlConstants.SUCCESS;
  46. }// else if(curProgCd[0].equals("RBA")){
  47. // SendProg_NIF024060(slabNo[i],"M");
  48. // }
  49. String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG,TO_CHAR(TO_DATE(T.SLAB_CUT_DTIME,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') SLAB_CUT_DTIME1 FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  50. param = new PosParameter();
  51. param.setWhereClauseParameter(0, slabNo[i]);
  52. rowset = dao.findByQueryStatement(sql, param);
  53. if (rowset.hasNext())//查询库存信息 已出库板坯不允许强制结束
  54. {
  55. row = rowset.next();
  56. Calendar nowCal = Calendar.getInstance();
  57. int nowMonth = nowCal.get(Calendar.MONTH) + 1;
  58. Calendar cutCal = Calendar.getInstance();
  59. try {
  60. cutCal.setTime(sdf.parse((String)row.getAttribute("SLAB_CUT_DTIME1")));
  61. } catch (ParseException e) {
  62. // TODO Auto-generated catch block
  63. e.printStackTrace();
  64. }
  65. int cutMonth = cutCal.get(Calendar.MONTH) + 1;
  66. if(nowMonth > cutMonth){
  67. context.put("MESSAGES", slabNo[i] + "板坯已关帐,不允许强制结束");
  68. return PosBizControlConstants.SUCCESS;
  69. }
  70. String stat = (String)row.getAttribute("STAT_FLAG");//
  71. if(!"在库".equals(stat)){
  72. context.put("MESSAGES", slabNo[i] + "板坯已出炼钢库,不允许强制结束,请核实");
  73. return PosBizControlConstants.SUCCESS;
  74. }
  75. }
  76. if(!"X01519".equals(PLT_TRS_EMP_NM) && !"sdf".equals(PLT_TRS_EMP_NM) && !"XL005001".equals(PLT_TRS_EMP_NM)){
  77. context.put("MESSAGES", "强制结束只可由限定账号操作,请联系相关人员");
  78. return PosBizControlConstants.SUCCESS;
  79. }
  80. forceEndSlab(slabNo[i]);
  81. }
  82. } else if (operType[0].equals("BCK") || operType[0].equals("CHF")
  83. || operType[0].equals("ZHK")) { //CHF 切废 ZHK 转废钢库 BCK 强制退回
  84. for (int i = 0; i < slabNo.length; i++) {
  85. if (!chk[i].equals("Y"))
  86. continue;
  87. if (curProgCd[0].equals("RBB")) {
  88. context.put("MESSAGES", slabNo[i] + "已经制定轧制计划,请先取消轧制计划!");
  89. return PosBizControlConstants.SUCCESS;
  90. }
  91. String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  92. param = new PosParameter();
  93. param.setWhereClauseParameter(0, slabNo[i]);
  94. rowset = dao.findByQueryStatement(sql, param);
  95. if (rowset.hasNext())//查询库存信息 已做过下列操作的不允许再操作
  96. {
  97. row = rowset.next();
  98. String stat = (String)row.getAttribute("STAT_FLAG");//
  99. if("利库母坯".equals(stat)){
  100. context.put("MESSAGES", slabNo[i] + "板坯已利库,不允许再进行此操作");
  101. return PosBizControlConstants.SUCCESS;
  102. }
  103. if("强制结束".equals(stat)){
  104. context.put("MESSAGES", slabNo[i] + "板坯已强制结束,不允许再进行此操作");
  105. return PosBizControlConstants.SUCCESS;
  106. }
  107. /*if("废钢库".equals(stat)){
  108. context.put("MESSAGES", slabNo[i] + "板坯已进入废钢库,不允许再进行此操作");
  109. return PosBizControlConstants.SUCCESS;
  110. }*/
  111. if("切废".equals(stat)){
  112. context.put("MESSAGES", slabNo[i] + "板坯已切废,不允许再进行此操作");
  113. return PosBizControlConstants.SUCCESS;
  114. }
  115. }
  116. /*热轧已入炉且处于上料,轧制完成的不可以退回到炼钢库*/
  117. if(operType[0].equals("BCK")){
  118. String sql1 = "select t.RHF_STAT from tbh02_reheatfur t where t.SLAB_NO like ?||'%' ";
  119. param = new PosParameter();
  120. param.setWhereClauseParameter(0, slabNo[i]);
  121. rowset = dao.findByQueryStatement(sql1, param);
  122. if (rowset.hasNext())
  123. {
  124. row = rowset.next();
  125. String RHF_STAT = (String)row.getAttribute("RHF_STAT");
  126. if(!"3".equals(RHF_STAT)){
  127. context.put("MESSAGES", "此坯料处于轧制上料或者轧制完成状态,不可退回炼钢库");
  128. return PosBizControlConstants.SUCCESS;
  129. }
  130. }
  131. }
  132. String err = forceRebackSlab(slabNo[i], SLAB_RTURN[0], operType[0]);
  133. if(!err.contains("成功")){
  134. context.put("MESSAGES", err);
  135. return PosBizControlConstants.SUCCESS;
  136. }
  137. }
  138. }
  139. context.put("MESSAGES", " 操作成功!");
  140. return PosBizControlConstants.SUCCESS;
  141. }
  142. private void forceEndSlab(String slabNo) {
  143. CallableStatement cstm = null;
  144. param = new PosParameter();
  145. param.setWhereClauseParameter(0, "5");
  146. param.setWhereClauseParameter(1, "3");
  147. param.setWhereClauseParameter(2, slabNo);
  148. dao.update("NIG020610_SLAB_END.update", param);
  149. param = new PosParameter();
  150. param.setWhereClauseParameter(0, slabNo);
  151. dao.update("NIG020610_SLAB_END_D.update", param);
  152. param = new PosParameter();
  153. param.setWhereClauseParameter(0, slabNo);
  154. dao.update("UIG040060_COMPLUS_FROM_SLAB_NO.update", param);
  155. /*财务数据上抛 强制结束的板坯也需要上传*/
  156. try{
  157. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  158. cstm.setString(1, slabNo);
  159. cstm.setString(2, "11A");
  160. cstm.setString(3, "D");
  161. cstm.setString(4, "板坯强制结束");
  162. cstm.setString(5, PLT_TRS_EMP_NM);
  163. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  164. cstm.execute();
  165. String err = cstm.getString(6);
  166. String er1 = "";
  167. }catch (Exception e) {
  168. // TODO: handle exception
  169. }finally{
  170. if (cstm != null){
  171. try{
  172. cstm.close();
  173. }
  174. catch (SQLException e){
  175. logger.logWarn(e.getMessage(), e);
  176. }
  177. }
  178. }
  179. }
  180. private String forceRebackSlab(String slabNo, String SLAB_RTURN,
  181. String operType) {
  182. // 增加降级历史记录 20101227 wxy
  183. CallableStatement cstm = null;
  184. //param = new PosParameter();
  185. try {
  186. cstm = this.getDao("mesdao").getCallableStatement(
  187. "ORD_HIS_INSERT.call");
  188. cstm.setString(1, "B");
  189. cstm.setString(2, "S");
  190. cstm.setString(3, "");
  191. cstm.setString(4, "UIG040700");
  192. cstm.setString(5, "");
  193. cstm.setString(6, "");
  194. cstm.setString(7, "");
  195. cstm.setString(8, slabNo);
  196. cstm.setString(9, "TM");
  197. cstm.setString(10, "");
  198. cstm.setString(11, "");
  199. cstm.setString(12, "");
  200. cstm.setString(13, "");
  201. cstm.execute();
  202. } catch (Exception ex) {
  203. logger.logError(ex.getMessage(), ex);
  204. } finally {
  205. if (cstm != null) {
  206. try {
  207. cstm.close();
  208. } catch (SQLException e) {
  209. logger.logWarn(e.getMessage(), e);
  210. }
  211. }
  212. }
  213. // end 增加降级历史记录
  214. if (operType.equals("BCK")) {//强制退回
  215. String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  216. param = new PosParameter();
  217. param.setWhereClauseParameter(0, slabNo);
  218. rowset = dao.findByQueryStatement(sql, param);
  219. if (rowset.hasNext())//查询库存信息 热轧切废不发送移动点,炼钢切废发送
  220. {
  221. row = rowset.next();
  222. String stat = (String)row.getAttribute("STAT_FLAG");//
  223. if("在库".equals(stat) || "利库母坯".equals(stat)){
  224. return "坯料"+slabNo+"已是"+stat+",不可再退回,请核实";
  225. }
  226. }
  227. param = new PosParameter();
  228. param.setWhereClauseParameter(0, SLAB_RTURN);
  229. param.setWhereClauseParameter(1, slabNo);
  230. dao.update("UIG040700_SLAB_BACK.update", param);
  231. //清除时要退回原跺位
  232. int updateCnt = new YardHandle(getDao("mesdao")).clearFromAddrBySlabNo(slabNo);
  233. /*财务数据上抛*/
  234. try{
  235. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  236. cstm.setString(1, slabNo);
  237. cstm.setString(2, "55A");
  238. cstm.setString(3, "D");
  239. cstm.setString(4, "板坯退热轧库(强制)");
  240. cstm.setString(5, PLT_TRS_EMP_NM);
  241. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  242. cstm.execute();
  243. String err = cstm.getString(6);
  244. }catch (Exception e) {
  245. // TODO: handle exception
  246. }finally{
  247. if (cstm != null){
  248. try{
  249. cstm.close();
  250. }
  251. catch (SQLException e){
  252. logger.logWarn(e.getMessage(), e);
  253. }
  254. }
  255. }
  256. } else if ((operType.equals("CHF"))) {//切废
  257. String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  258. param = new PosParameter();
  259. param.setWhereClauseParameter(0, slabNo);
  260. rowset = dao.findByQueryStatement(sql, param);
  261. if (rowset.hasNext())//查询库存信息 热轧切废不发送移动点,炼钢切废发送
  262. {
  263. row = rowset.next();
  264. String stat = (String)row.getAttribute("STAT_FLAG");//
  265. if("在库".equals(stat)){
  266. /*切废新增发送异动点 jiangxin 20220304*/
  267. try{
  268. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  269. cstm.setString(1, slabNo);
  270. cstm.setString(2, "11AD");
  271. cstm.setString(3, "N");
  272. cstm.setString(4, "板坯切废");
  273. cstm.setString(5, PLT_TRS_EMP_NM);
  274. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  275. cstm.execute();
  276. String err = cstm.getString(6);
  277. }catch (Exception e) {
  278. // TODO: handle exception
  279. }finally{
  280. if (cstm != null){
  281. try{
  282. cstm.close();
  283. }
  284. catch (SQLException e){
  285. logger.logWarn(e.getMessage(), e);
  286. }
  287. }
  288. }
  289. }
  290. }
  291. param = new PosParameter();
  292. param.setWhereClauseParameter(0, SLAB_RTURN);
  293. param.setWhereClauseParameter(1, slabNo);
  294. dao.update("UIG040700_SLAB_CHF.update", param);
  295. param = new PosParameter();
  296. param.setWhereClauseParameter(0, slabNo);
  297. dao.update("UIG040700_CHF_YARD.update", param);
  298. } else if ((operType.equals("ZHK"))) {//转废钢库
  299. //转入废钢库的坯料必须判废
  300. param = new PosParameter();
  301. param.setWhereClauseParameter(0, slabNo);
  302. String querysql = "SELECT T.SLAB_TOT_DEC_GRD FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  303. rowset = dao.findByQueryStatement(querysql, param);
  304. if(rowset.hasNext()){
  305. row = rowset.next();
  306. String SLAB_TOT_DEC_GRD = (String)row.getAttribute("SLAB_TOT_DEC_GRD");
  307. if(StringUtils.isBlank(SLAB_TOT_DEC_GRD) || !"8".equals(SLAB_TOT_DEC_GRD)){
  308. return "坯料"+slabNo+"综判未判废,不允许转入废钢库,请联系质检";
  309. }
  310. }
  311. param = new PosParameter();
  312. param.setWhereClauseParameter(0, SLAB_RTURN);
  313. param.setWhereClauseParameter(1, slabNo);
  314. dao.update("UIG040700_SLAB_ZHK.update", param);
  315. param = new PosParameter();
  316. param.setWhereClauseParameter(0, slabNo);
  317. dao.update("UIG040700_CHF_YARD.update", param);
  318. /*财务数据上抛 转废钢库不再抛送异动点
  319. try{
  320. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  321. cstm.setString(1, slabNo);
  322. cstm.setString(2, "11A");
  323. cstm.setString(3, "D");
  324. cstm.setString(4, "板坯转废钢库");
  325. cstm.setString(5, PLT_TRS_EMP_NM);
  326. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  327. cstm.execute();
  328. String err = cstm.getString(6);
  329. }catch (Exception e) {
  330. // TODO: handle exception
  331. }finally{
  332. if (cstm != null){
  333. try{
  334. cstm.close();
  335. }
  336. catch (SQLException e){
  337. logger.logWarn(e.getMessage(), e);
  338. }
  339. }
  340. }*/
  341. }
  342. return "操作成功";
  343. }
  344. public String SendProg_NIE012070(String MatNo, String sOrdNo,
  345. String sOrdSeq, String sBefOrdNo, String sBefOrdSeq,
  346. String sProgCd, String sBefProgCd, String sKind, String nwgt) {
  347. logger.logInfo("PosSaveSlabCutting---> nwgt:" + nwgt);
  348. PosContext context = new PosContext();
  349. PosMessage message = new PosMESMessageImpl();
  350. BigDecimal Wgt = new BigDecimal(nwgt);
  351. String TcId = "NIE012070";
  352. message.setTCID(TcId);
  353. message.setObject("MSG_ID", TcId);
  354. message.setObject("BEF_ORD_NO", sBefOrdNo);
  355. message.setObject("BEF_ORD_SEQ", sBefOrdSeq);
  356. message.setObject("ORD_NO", sOrdNo);
  357. message.setObject("ORD_SEQ", sOrdSeq);
  358. message.setObject("BEF_PROG_CD", sBefProgCd);
  359. message.setObject("PROG_CD", sProgCd);
  360. message.setObject("MAT_TYPE", sKind);
  361. message.setObject("MAT_NO", MatNo);
  362. message.setObject("WGT", Wgt);
  363. message.setObject("PGMID", "PosSaveSlabCutting");
  364. message.setObject("REG_ID", "UIG020060");
  365. context.setMessage(message);
  366. message.setTCID(TcId);
  367. String SERVICE_POSTFIX = "-service";
  368. context
  369. .put(PosBizControlConstants.SERVICE_NAME, TcId
  370. + SERVICE_POSTFIX);
  371. PosBizProvider.getController().doSubController(context, false);
  372. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  373. logger.logInfo("PosSaveSlabCutting SendProg_NIE012070 SERVICE_ERR_MSG:"
  374. + SERVICE_ERR_MSG);
  375. if (SERVICE_ERR_MSG != null) {
  376. throw new PosException(SERVICE_ERR_MSG);
  377. }
  378. return null;
  379. }
  380. public String SendProg_NIE012080() {
  381. PosContext context = new PosContext();
  382. PosMessage message = new PosMESMessageImpl();
  383. String TcId = "NIE012080";
  384. message.setTCID(TcId);
  385. message.setObject("MSG_ID", TcId);
  386. message.setObject("AA", null);
  387. context.setMessage(message);
  388. message.setTCID(TcId);
  389. String SERVICE_POSTFIX = "-service";
  390. context
  391. .put(PosBizControlConstants.SERVICE_NAME, TcId
  392. + SERVICE_POSTFIX);
  393. PosBizProvider.getController().doSubController(context, false);
  394. String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG");
  395. logger.logInfo("PosSaveSlabCutting SendProg_NIE012080 SERVICE_ERR_MSG:"
  396. + SERVICE_ERR_MSG);
  397. if (SERVICE_ERR_MSG != null) {
  398. throw new PosException(SERVICE_ERR_MSG);
  399. }
  400. return null;
  401. }
  402. // call mill scheduling reject service class
  403. public void SendProg_NIF024060(String SlabNo, String RejType) {
  404. logger.logInfo("PosSaveMissionNo SendProg_NIF024060 ");
  405. PosContext context = new PosContext();
  406. PosMessage message = new PosMESMessageImpl();
  407. String TcId = "NIF024060";
  408. message.setTCID(TcId);
  409. message.setObject("MSG_ID", TcId);
  410. message.setObject("TYPE", RejType);
  411. message.setObject("FROM", SlabNo);
  412. message.setObject("TO", SlabNo);
  413. message.setObject("REG_ID", "UIG020060");
  414. context.setMessage(message);
  415. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  416. String transactionCode = context.getMessage().getTC();
  417. message.setTCID(TcId);
  418. String serviceName = "NIF024060";
  419. String SERVICE_POSTFIX = "-service";
  420. context.put(PosBizControlConstants.SERVICE_NAME, serviceName
  421. + SERVICE_POSTFIX);
  422. context.setMessage(message);
  423. PosBizControlIF controller = PosBizProvider.getController();
  424. controller.doSubController(context, false);
  425. }
  426. }