911867b7c6485c9271387af1c302308a648d0ee0.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. package xin.glue.ui.G.G02;
  2. import java.sql.CallableStatement;
  3. import java.sql.SQLException;
  4. import org.apache.commons.lang.StringUtils;
  5. import xin.glue.ui.G.G01.XTBGCOMM;
  6. import com.posdata.glue.biz.activity.PosActivity;
  7. import com.posdata.glue.biz.constants.PosBizControlConstants;
  8. import com.posdata.glue.context.PosContext;
  9. import com.posdata.glue.dao.PosGenericDao;
  10. import com.posdata.glue.dao.vo.PosParameter;
  11. import com.posdata.glue.dao.vo.PosRow;
  12. import com.posdata.glue.dao.vo.PosRowSet;
  13. public class XinDivideCharge extends PosActivity {
  14. public String runActivity(PosContext context) {
  15. CallableStatement cstm = null;
  16. PosGenericDao dao = getDao("mesdao");
  17. PosParameter param = null;
  18. PosRowSet rowset = null;
  19. PosRow row = null;
  20. String sReturnMsg = "";
  21. String[] chk = (String[])context.get("CHK");
  22. String[] divideType = (String[])context.get("DIVIDE_TYPE");
  23. String[] chargeNo = (String[])context.get("CHARGE_NO");
  24. String[] subChargeNo = (String[])context.get("SUB_CHARGE_NO");
  25. String[] slabNo = (String[])context.get("SUB_SLAB_NO");
  26. String[] subSlabNo = (String[])context.get("SUB_SLAB_NO");
  27. String[] chargeWgt = (String[])context.get("CHARGE_WGT");
  28. String[] slabWgt = (String[])context.get("SLAB_WGT");
  29. String[] subChargeCode = (String[])context.get("SUB_CHARGE_CODE");
  30. String[] regId = (String[])context.get("REG_ID");
  31. String[] regShift = (String[])context.get("REG_SHIFT");
  32. String[] regGroup = (String[])context.get("REG_GROUP");
  33. String[] chemSeq = (String[])context.get("CHEM_SEQ");
  34. String[] SLAB_NO = (String[])context.get("SLAB_NO");
  35. String[] REG_EMP_ID = (String[])context.get("REG_EMP_ID");
  36. if(divideType == null ){ return "SUCCESS";}
  37. String subChNo = "" ;
  38. String chNo = "";
  39. String chmSq = "";
  40. String newSlabNo = "";
  41. for(int i = 0 ; i < divideType.length ; i++){
  42. if(!chk[i].equals("Y")){continue;}
  43. subChNo = subChargeNo[i];
  44. chNo = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim();
  45. chmSq = chemSeq[i];
  46. newSlabNo = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim() + SLAB_NO[i].substring(10,13);
  47. //炉次
  48. /*if(divideType[i].equals("C")){
  49. //检查有板坯切割以后,不能直接根据钢水分炉,必须从板坯划分
  50. param = new PosParameter();
  51. param.setWhereClauseParameter(0, chargeNo[i]);
  52. rowset = dao.find("UIG020090_SLAB_CUTED_CHEK", param);
  53. if(rowset.hasNext()){
  54. context.put("MESSAGES", " 板坯切割完成,不能操作! ");
  55. return PosBizControlConstants.SUCCESS;
  56. }
  57. param = new PosParameter();
  58. param.setWhereClauseParameter(0, "Y");
  59. param.setWhereClauseParameter(1, chargeNo[i]);
  60. dao.update("UIG020090_CHARGE_COMM_DIVIDE_UPDATE", param);
  61. param = new PosParameter();
  62. param.setWhereClauseParameter(0, chargeWgt[i]);
  63. param.setWhereClauseParameter(1, subChargeCode[i]);
  64. int uptCnt = dao.update("UIG020090_CHARGE_COMMD_WGT_UPDATE", param);
  65. if(uptCnt == 0){
  66. param = new PosParameter();
  67. param.setValueParamter(0, subChargeCode[i]);
  68. param.setValueParamter(1, chargeWgt[i]);
  69. param.setValueParamter(2, subChargeCode[i]);
  70. param.setValueParamter(3, regId[i]);
  71. param.setValueParamter(4, regShift[i]);
  72. param.setValueParamter(5, regGroup[i]);
  73. param.setValueParamter(6, chargeNo[i]);
  74. dao.insert("UIG020090_CHARGE_COMMD_WGT_INSERT", param);
  75. }
  76. param = new PosParameter();
  77. param.setWhereClauseParameter(0, chargeNo[i]);
  78. param.setWhereClauseParameter(1, chargeNo[i]);
  79. param.setWhereClauseParameter(2, chargeNo[i]);
  80. param.setWhereClauseParameter(3, chargeNo[i]);
  81. dao.update("UIG020090_CHARGE_COMMD_WGT_UPDATE_02", param);
  82. //板坯
  83. }else*/
  84. if(divideType[i].equals("S")){
  85. if(!newSlabNo.equals(SLAB_NO[i])){
  86. String sql = "SELECT COILSTAT(T.SLAB_NO) STAT_FLAG FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?";
  87. param = new PosParameter();
  88. param.setWhereClauseParameter(0, SLAB_NO[i]);
  89. rowset = this.getDao("mesdao").findByQueryStatement(sql, param);
  90. if (rowset.hasNext())//查询库存信息 记录更改跺位之后的库存信息
  91. {
  92. row = rowset.next();
  93. String cntStat = (String)row.getAttribute("STAT_FLAG");//
  94. if(!"在库".equals(cntStat)){//视为不在库
  95. context.put("MESSAGES", " 操作失败!" + SLAB_NO[i] + "已不在炼钢库,请退库后再进行操作");
  96. return PosBizControlConstants.SUCCESS;
  97. }
  98. }
  99. /*财务数据上抛*/
  100. try{
  101. /*原板坯号*/
  102. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  103. cstm.setString(1, SLAB_NO[i]);
  104. cstm.setString(2, "72AD");
  105. cstm.setString(3, "N");
  106. cstm.setString(4, "炉次拆分(板坯)O");
  107. cstm.setString(5, StringUtils.isBlank(REG_EMP_ID[0])?"3qAdmin00":REG_EMP_ID[0]);
  108. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  109. cstm.execute();
  110. String err = cstm.getString(6);
  111. }catch (Exception e) {
  112. // TODO: handle exception
  113. }finally{
  114. if (cstm != null){
  115. try{
  116. cstm.close();
  117. }
  118. catch (SQLException e){
  119. logger.logWarn(e.getMessage(), e);
  120. }
  121. }
  122. }
  123. }
  124. String sqlStr = "select * from tbg02_charge_comm_d where charge_no = ?";
  125. String para = subChargeNo[i].substring(0, 9).trim() + subChargeCode[i].trim();
  126. if(!XTBGCOMM.chekRecord(dao,para, sqlStr)){
  127. param = new PosParameter();
  128. param.setValueParamter(0, subChargeCode[i]);
  129. param.setValueParamter(1, "");
  130. param.setValueParamter(2, subChargeCode[i]);
  131. param.setValueParamter(3, regId[i]);
  132. param.setValueParamter(4, regShift[i]);
  133. param.setValueParamter(5, regGroup[i]);
  134. param.setValueParamter(6, subChargeNo[i]);
  135. dao.insert("UIG020090_CHARGE_COMMD_WGT_INSERT", param);
  136. }else{
  137. param = new PosParameter();
  138. param.setValueParamter(0, "");
  139. param.setValueParamter(1, subChargeCode[i]);
  140. param.setValueParamter(2, regId[i]);
  141. param.setValueParamter(3, regShift[i]);
  142. param.setValueParamter(4, regGroup[i]);
  143. param.setValueParamter(5, subChargeNo[i]);
  144. param.setValueParamter(6, para);
  145. dao.insert("UIG020090_CHARGE_COMMD_WGT_UPDATE_03", param);
  146. }
  147. //是否分炉区分
  148. param = new PosParameter();
  149. param.setWhereClauseParameter(0, "Y");
  150. param.setWhereClauseParameter(1, chargeNo[i]);
  151. dao.update("UIG020090_CHARGE_COMM_DIVIDE_UPDATE", param);
  152. //清空垛位
  153. param = new PosParameter();
  154. param.setWhereClauseParameter(0, SLAB_NO[i]);
  155. dao.update("UIG040060_COMPLUS_FROM_SLAB_NO.update", param);
  156. //所有坯料分炉后都清空判定信息
  157. param = new PosParameter();
  158. param.setWhereClauseParameter(0, subChargeCode[i]);
  159. param.setWhereClauseParameter(1, subChargeCode[i]);
  160. param.setWhereClauseParameter(2, slabNo[i]);
  161. dao.update("UIG020090_SLAB_COMM_UPDATE_NEW", param);
  162. /*String sql1 = "SELECT NVL(T1.V_COUNT,0) V_COUNT, T2.HOT_ROLL_REQ_DATE FROM TBG02_SLAB_COMM T "
  163. + "LEFT JOIN (SELECT SUM(1) V_COUNT, TT.BILLET_XN FROM SCC_BOARD_STEELPLAN_LOG TT "
  164. + " GROUP BY TT.BILLET_XN) T1 ON T.DSN_SLAB_NO = T1.BILLET_XN "
  165. + "LEFT JOIN TBF01_SPEC_SLAB T2 ON T.PLAN_SLAB_NO = T2.SLAB_MANA_NO "
  166. + " WHERE T.SLAB_NO = ?";
  167. param = new PosParameter();
  168. param.setWhereClauseParameter(0, SLAB_NO[i]);
  169. rowset = dao.findByQueryStatement(sql1, param);
  170. if (rowset.hasNext())
  171. {
  172. row = rowset.next();
  173. String HOT_ROLL_REQ_DATE = (String)row.getAttribute("HOT_ROLL_REQ_DATE");
  174. int V_COUNT = ((BigDecimal)row.getAttribute("V_COUNT")).intValue();
  175. if("JH".equals(HOT_ROLL_REQ_DATE) || V_COUNT > 0){
  176. //一体化计划则清除所有判定结果
  177. param = new PosParameter();
  178. param.setWhereClauseParameter(0, subChargeCode[i]);
  179. param.setWhereClauseParameter(1, subChargeCode[i]);
  180. param.setWhereClauseParameter(2, slabNo[i]);
  181. dao.update("UIG020090_SLAB_COMM_UPDATE_NEW", param);
  182. }else{
  183. //修改板坯分炉号
  184. param = new PosParameter();
  185. param.setWhereClauseParameter(0, subChargeCode[i]);
  186. param.setWhereClauseParameter(1, subChargeCode[i]);
  187. param.setWhereClauseParameter(2, slabNo[i]);
  188. dao.update("UIG020090_SLAB_COMM_UPDATE", param);
  189. }
  190. }*/
  191. //修改分炉次板坯块数,重量
  192. param = new PosParameter();
  193. param.setWhereClauseParameter(0, subChargeNo[i]);
  194. rowset = dao.find("UIG020090_SLAB_COMM_QUERY",param);
  195. while(rowset.hasNext()){
  196. row = rowset.next();
  197. String chgNo = (String)row.getAttribute("CHARGE_NO");
  198. param = new PosParameter();
  199. param.setWhereClauseParameter(0, regId[i]);
  200. param.setWhereClauseParameter(1, regShift[i]);
  201. param.setWhereClauseParameter(2, regGroup[i]);
  202. param.setWhereClauseParameter(3, chgNo);
  203. param.setWhereClauseParameter(4, chgNo);
  204. dao.update("UIG020090_CHARGE_COMMD_UPDATE_02", param);
  205. }
  206. }
  207. if(divideType[0].equals("S")){
  208. param = new PosParameter();
  209. param.setWhereClauseParameter(0, subChargeNo[i]);
  210. param.setWhereClauseParameter(1, subChargeNo[i]);
  211. dao.update("UIG020090_CHARGE_COMMD_DELETE", param);
  212. }
  213. if(!newSlabNo.equals(SLAB_NO[i])){
  214. /*财务数据上抛*/
  215. try{
  216. /*新板坯号*/
  217. cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL");
  218. cstm.setString(1, newSlabNo);
  219. cstm.setString(2, "72AD");
  220. cstm.setString(3, "N");
  221. cstm.setString(4, "炉次拆分(板坯)N");
  222. cstm.setString(5, StringUtils.isBlank(REG_EMP_ID[0])?"3qAdmin00":REG_EMP_ID[0]);
  223. cstm.registerOutParameter(6, java.sql.Types.VARCHAR);
  224. cstm.execute();
  225. String err = cstm.getString(6);
  226. }catch (Exception e) {
  227. // TODO: handle exception
  228. }finally{
  229. if (cstm != null){
  230. try{
  231. cstm.close();
  232. }
  233. catch (SQLException e){
  234. logger.logWarn(e.getMessage(), e);
  235. }
  236. }
  237. }
  238. }
  239. }
  240. //修改分炉次板坯块数,重量
  241. try{
  242. cstm = dao.getCallableStatement("UIG0020090_01.CALLSTATEMENT");
  243. cstm.setString(1, subChNo);
  244. cstm.setString(2, chNo);
  245. cstm.setString(3, chmSq);
  246. cstm.setString(4, "");
  247. cstm.registerOutParameter(5, java.sql.Types.VARCHAR);
  248. cstm.execute();
  249. sReturnMsg = cstm.getString(5);
  250. System.out.println("------------> " + sReturnMsg + "-----------" + sReturnMsg);
  251. }catch(Exception ex){
  252. logger.logError(ex.getMessage(), ex);
  253. }finally
  254. {
  255. if (cstm != null)
  256. {
  257. try
  258. {
  259. cstm.close();
  260. }
  261. catch (SQLException e)
  262. {
  263. logger.logWarn(e.getMessage(), e);
  264. }
  265. }
  266. }
  267. context.put("MESSAGES", " 操作成功! ");
  268. return PosBizControlConstants.SUCCESS;
  269. }
  270. }