37377045346327af277f8a19600f9f5dde2cce99.svn-base 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. package xin.glue.ui.J.J01;
  2. //import xin.glue.ui.common.component.PosSiteConfig;
  3. import java.sql.CallableStatement;
  4. import java.sql.SQLException;
  5. import xin.glue.ui.common.component.PosSiteLog;
  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. /*
  19. * desc:车辆排车及装车指示,运送状态不改变,只是回填排车顺序号和车厢号,发货指示状态从4到5.并且把发货指示号,运输指示号,钢卷号作为条件来更新排车顺序和车厢号
  20. * 这里发货指示号改变的条件是需要在此发货指示号下面的所有钢卷都改变的时候才能改变发货指示的状态。
  21. * author:唐亮 tangliang
  22. * date:2008-12-9
  23. */
  24. public class saveDLIVDIR extends PosActivity{
  25. public String runActivity(PosContext context)
  26. {
  27. // 从页面获取参数数据,供更新页面使用
  28. //行状态
  29. String[] rowStuts2 = (String[])context.get("rowStuts2");
  30. //选择项
  31. String[] CHK = (String[])context.get("CHK");
  32. //排车顺序号
  33. String[] ALLOC_SEQ = (String[])context.get("ALLOC_SEQ");
  34. //车厢号
  35. String[] TRANS_CAR_NO = (String[])context.get("TRANS_CAR_NO");
  36. //运输号
  37. String[] DLIV_DIRNO = (String[])context.get("DLIV_DIRNO");
  38. //发货指示号
  39. String[] SHIP_DIRNO = (String[])context.get("SHIP_DIRNO");
  40. //批次号
  41. String[] OLD_SAMPL_NO = (String[])context.get("OLD_SAMPL_NO");
  42. //钢卷号
  43. String[] COIL_NO = (String[])context.get("COIL_NO");
  44. //登录用户 REG_ID
  45. String[] REG_ID = (String[])context.get("REG_ID");
  46. //重量数据
  47. String[] ACT_WGT = (String[])context.get("ACT_WGT");
  48. //存储过程返回结果
  49. String sCRET_NO = "";
  50. String sRETURN_CD = "";
  51. String sRETURN_MSG = "";
  52. //钢卷公共表中的ship_prog_cd
  53. String ship_prog_cd = null;
  54. String CUR_LOAD_LOC = null;
  55. // 这里必须根据运输指示号的个数来生成发货清单号
  56. int invCnt = 0;
  57. if( DLIV_DIRNO != null){
  58. invCnt = DLIV_DIRNO.length;
  59. }
  60. for(int j=0;j<invCnt;j++){
  61. //这个时候把发货清单号刷到运输表和公共表
  62. PosParameter paramB = new PosParameter();
  63. paramB.setWhereClauseParameter(0, DLIV_DIRNO[j]);
  64. //判断,重复的运输指示号不能多次生成序号
  65. if( j == 0 ) {
  66. getDao("mesdao").update("UIJ010060_INV_NO.UPDATE", paramB);
  67. } else {
  68. if( DLIV_DIRNO[j-1].equals(DLIV_DIRNO[j]) )
  69. continue;
  70. else
  71. getDao("mesdao").update("UIJ010060_INV_NO.UPDATE", paramB);
  72. }
  73. //这里应该取出运输表里生成的发货清单号,插入钢卷公共表
  74. PosParameter paramC = new PosParameter();
  75. paramC.setWhereClauseParameter(0, DLIV_DIRNO[j]);
  76. PosRowSet rowsC = getDao("mesdao").find("UIJ010040_13.select", paramC);
  77. String INV_NO = null;
  78. if(rowsC.hasNext()){
  79. PosRow rowC = rowsC.next();
  80. INV_NO = (String) rowC.getAttribute("INV_NO");
  81. PosParameter paramD = new PosParameter();
  82. paramD.setWhereClauseParameter(0, INV_NO);
  83. paramD.setWhereClauseParameter(1, DLIV_DIRNO[j]);
  84. getDao("mesdao").update("UIJ010040_11.update", paramD);
  85. }
  86. }
  87. //这里最后实际的装车情况在TBH02_COIL_COMM中对应,并且覆盖销售请车的时候对应的关系
  88. for(int i=0;i<=rowStuts2.length-1;i++){
  89. if(CHK[i].equals("Y")){
  90. // 判断是否全部选择的标志位
  91. boolean note = true;
  92. //获取钢卷的垛位,根据垛位判断是否为退账面卷
  93. PosParameter param44 = new PosParameter();
  94. param44.setWhereClauseParameter(0, OLD_SAMPL_NO[i]);
  95. PosRowSet rows4 = getDao("mesdao").find(
  96. "UIJ010041_select_loc", param44);
  97. PosRow row1 = rows4.next();
  98. CUR_LOAD_LOC = (String) row1
  99. .getAttribute("CUR_LOAD_LOC");
  100. //这里需要更新钢卷公共表,最终确定把卷对应到相应的车厢号。并且根据对应关系制定相应的行车命令,装卷下车
  101. //这里根据钢卷号,发货指示号,运输指示号来更新车厢号和排车顺序号
  102. PosParameter param0 = new PosParameter();
  103. param0.setWhereClauseParameter(0, TRANS_CAR_NO[i]);
  104. param0.setWhereClauseParameter(1, ALLOC_SEQ[i]);
  105. param0.setWhereClauseParameter(2, DLIV_DIRNO[i]);
  106. param0.setWhereClauseParameter(3, SHIP_DIRNO[i]);
  107. param0.setWhereClauseParameter(4, ACT_WGT[i]);
  108. param0.setWhereClauseParameter(5, OLD_SAMPL_NO[i]);
  109. //跳过行车,直接改变发货状态为06.同时需要清楚库位
  110. getDao("mesdao").update("UIJ010040_02.update", param0);
  111. //退账面卷冷轧垛位清除--20160706
  112. if("1".equals(CUR_LOAD_LOC.substring(0,1)))
  113. {
  114. PosParameter param3 = new PosParameter();
  115. param3.setWhereClauseParameter(0, OLD_SAMPL_NO[i]);
  116. getDao("mesdao").update("UIJ010041_08.update", param3);
  117. getDao("mesdao").update("UIJ010041_09.update", param3);
  118. }
  119. PosParameter param2 = new PosParameter();
  120. param2.setWhereClauseParameter(0, OLD_SAMPL_NO[i]);
  121. getDao("mesdao").update("UIJ010040_09.update", param2);
  122. //装车确认后重新接收重量20140219 20160416取消排车界面的过磅
  123. // PosParameter paramCAI = new PosParameter();
  124. // paramCAI.setWhereClauseParameter(0, OLD_SAMPL_NO[i]);
  125. // getDao("mesdao").update("UIJ010041_07.update", paramCAI);
  126. //确认的时候会修改车号与运输指示号的对应关系。这里回填运输表,改变车号信息
  127. PosParameter param00 = new PosParameter();
  128. param00.setWhereClauseParameter(0, ALLOC_SEQ[i]);
  129. param00.setWhereClauseParameter(1, TRANS_CAR_NO[i]);
  130. param00.setWhereClauseParameter(2, DLIV_DIRNO[i]);
  131. getDao("mesdao").update("UIJ010040_10.update", param00);
  132. //这里应该需要把最后的实际装车情况放入运输表中
  133. //这里不改变运送表的信息,实际的车辆与卷的对应关系以钢卷公共表为准。
  134. // PosParameter param2 = new PosParameter();
  135. // param2.setWhereClauseParameter(0, ALLOC_SEQ[i]);
  136. // param2.setWhereClauseParameter(1, TRANS_CAR_NO[i]);
  137. // param2.setWhereClauseParameter(2, DLIV_DIRNO[i]);
  138. //
  139. // getDao("mesdao").update("UIJ010040_06.update", param2);
  140. PosParameter param33 = new PosParameter();
  141. param33.setWhereClauseParameter(0, SHIP_DIRNO[i]);
  142. PosRowSet rows3 = getDao("mesdao").find("UIJ010040_select_ship", param33);
  143. while(rows3.hasNext()){
  144. //循环的取出每一个值,并且判断是否所有的值全部都改变成希望的结果
  145. PosRow row = rows3.next();
  146. ship_prog_cd = (String) row.getAttribute("SHIP_PROG_CD");
  147. logger.logInfo(SHIP_DIRNO[i]+" saveDLIVDIR查看发货指示号下的钢卷状态 : "+ DLIV_DIRNO[i]+" : "+ship_prog_cd);
  148. //当存在值为03的时候,标志位为flase
  149. while(ship_prog_cd.equals("04") || ship_prog_cd.equals("03")){
  150. note = false;
  151. break;
  152. }
  153. }
  154. logger.logInfo("saveDLIVDIR 查看发货指示号下的钢卷是否全部装完标志 : "+ note);
  155. if(note == true){
  156. //这里需要判断同一发货指示下的运输指示是否全部选中发完,如果没有的话不能改变发货指示的状态
  157. //更新发货指示号的状态,如果可以多个发货指示号混编的情况就必须全部更新
  158. PosParameter param1 = new PosParameter();
  159. param1.setWhereClauseParameter(0, SHIP_DIRNO[i]);
  160. getDao("mesdao").update("UIJ010040_05.update", param1);
  161. //SendProg_NIE012080();
  162. //TL 加入调用品质的存储过程 NIB029020
  163. CallableStatement PlRtn = getDao("mesdao").getCallableStatement("ExecuteProcedure_NIB029020");
  164. try {
  165. if(PlRtn != null) {
  166. PlRtn.setString(1, SHIP_DIRNO[i]);
  167. PlRtn.registerOutParameter(2, java.sql.Types.VARCHAR);
  168. PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR);
  169. PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR);
  170. PlRtn.execute();
  171. sCRET_NO = PlRtn.getString(2);
  172. sRETURN_CD = PlRtn.getString(3);
  173. sRETURN_MSG = PlRtn.getString(4);
  174. logger.logInfo("saveDLIVDIR---> NIB029020 TC PlRtn1:["+sRETURN_CD+"]:"+ sRETURN_MSG);
  175. }
  176. } catch (SQLException e) {
  177. throw new PosException(e.getMessage());
  178. }finally
  179. {
  180. if (PlRtn != null)
  181. {
  182. try
  183. {
  184. PlRtn.close();
  185. }
  186. catch (SQLException e)
  187. {
  188. logger.logWarn(e.getMessage(), e);
  189. }
  190. }
  191. }
  192. }
  193. }else{
  194. //这里在前台做了处理,后台就暂时不处理
  195. logger.logInfo( "在装车指示处理中出现了匹配了车厢号的钢卷没有选中的情况,UIJ010040。" );
  196. }
  197. }
  198. //通过返回结果来回滚
  199. if("YY".equals(sRETURN_CD)){
  200. //最后调用,从新计算进程量。代替销售
  201. SendProg_NIE012080();
  202. }
  203. else{
  204. logger.logInfo("saveDLIVDIR 品质保证书调用失败,返回标志 sRETURN_CD : "+sRETURN_CD);
  205. //这里出现的异常情况是板坯号与钢卷号不匹配
  206. String vtemp="sRETURN_CD";
  207. context.put("rs", vtemp);
  208. //后台报错,提示标志不能到达前台。自动回滚
  209. this.rollbackTransaction("tx1");
  210. }
  211. return PosBizControlConstants.SUCCESS;
  212. }
  213. public void SendProg_NIE012070(String COIL_NO,String BefProg,String OrdNo,String OrdSeq,Number wgt,String RegId )
  214. {
  215. logger.logInfo("PosSAveOutHeatFurnace---> wgt:"+wgt );
  216. // BigDecimal wgt = new BigDecimal();
  217. PosContext context = new PosContext();
  218. PosMessage message = new PosMESMessageImpl();
  219. String TcId = "NIE012070";
  220. message.setTCID(TcId);
  221. message.setObject("MSG_ID",TcId);
  222. message.setObject("BEF_ORD_NO",null);
  223. message.setObject("BEF_ORD_SEQ",null);
  224. message.setObject("ORD_NO",OrdNo);
  225. message.setObject("ORD_SEQ",OrdSeq);
  226. message.setObject("BEF_PROG_CD",BefProg);
  227. message.setObject("PROG_CD","SFB");
  228. message.setObject("MAT_TYPE","AR");
  229. message.setObject("MAT_NO",COIL_NO);
  230. message.setObject("WGT", wgt );
  231. message.setObject("PGMID","UIJ010040");
  232. message.setObject("REG_ID",RegId);
  233. context.setMessage(message);
  234. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  235. String transactionCode = context.getMessage().getTC();
  236. logger.logInfo("PosSAveOutHeatFurnace---> transactionCode:("+transactionCode+")" );
  237. message.setTCID(TcId);
  238. String serviceName = "NIE012070";
  239. String SERVICE_POSTFIX = "-service";
  240. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  241. context.setMessage(message);
  242. PosBizControlIF controller = PosBizProvider.getController();
  243. controller.doSubController(context,false);
  244. logger.logInfo("PosSAveOutHeatFurnace---> NIE012070 TC SendProgress end" );
  245. }
  246. public void SendProg_NIE012080()
  247. {
  248. PosContext context = new PosContext();
  249. PosMessage message = new PosMESMessageImpl();
  250. String TcId = "NIE012080";
  251. message.setTCID(TcId);
  252. message.setObject("MSG_ID",TcId);
  253. message.setObject("AA",null);
  254. context.setMessage(message);
  255. this.processComponent(PosConstants.CREATE_MESSAGE, context);
  256. String transactionCode = context.getMessage().getTC();
  257. message.setTCID(TcId);
  258. String serviceName = "NIE012080";
  259. String SERVICE_POSTFIX = "-service";
  260. context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX);
  261. context.setMessage(message);
  262. PosBizControlIF controller = PosBizProvider.getController();
  263. controller.doSubController(context,false);
  264. }
  265. }