11d2984f2ef65a70371249e129a6c1b7c38c8877.svn-base 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. package UIE.UIE03;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.PrintStream;
  4. import java.sql.SQLException;
  5. import java.text.DecimalFormat;
  6. import java.util.ArrayList;
  7. import java.util.HashSet;
  8. import java.util.Map;
  9. import java.util.Set;
  10. import org.apache.commons.lang.StringUtils;
  11. import UIB.COM.XmlSqlParsersFactory;
  12. import CoreFS.SA01.CoreIComponent;
  13. import CoreFS.SA06.CoreReturnObject;
  14. public class UIE043010 extends CoreIComponent {
  15. public CoreReturnObject repSave()throws Exception
  16. {
  17. //String sqlstr = XmlSqlParsersFactory.getSql("UIE043010_01.update");
  18. String sqlstr = "UPDATE test_tbb02_work SET ABC = '11' WHERE COIL_NO = '1'";
  19. CoreReturnObject cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr);
  20. sqlstr = "UPDATE test_tbb02_work SET ABC = '22' WHERE COIL_NO = '2'";
  21. cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr);
  22. sqlstr = "UPDATE test_tbb02_work SET ABC = '33' WHERE COIL_NO1 = '3'";
  23. cro = this.getDao("KgDao").ExcuteNonQuery(sqlstr);
  24. return null;
  25. }
  26. public CoreReturnObject query01(String areaType) throws SQLException
  27. {
  28. CoreReturnObject cro=new CoreReturnObject();
  29. StringBuffer str = new StringBuffer();
  30. str.append("SELECT \n");
  31. str.append("a.ROLL_MANA_NO --轧制单元号 \n");
  32. str.append(",a.ROLL_COIL_SEQ --单元内序号 \n");
  33. str.append(",a.COIL_EDT_SEQ --轧制序号 \n");
  34. str.append(",a.C_COIL_NO --冷卷号 \n");
  35. str.append(",a.COIL_NO --热卷号 \n");
  36. str.append(",a.SPEC_STL_GRD --酸轧牌号 \n");
  37. str.append(",a.STL_GRD --热轧牌号 \n");
  38. str.append(",a.STL_GRP_CD --钢号组 \n");
  39. str.append(",a.COIL_THK --热卷厚度 \n");
  40. str.append(",a.COIL_WTH --热卷宽度 \n");
  41. str.append(",a.COIL_WGT --热卷重量 \n");
  42. str.append(",b.cur_load_loc --堆放位置 \n");
  43. str.append(",a.ORD_NO --合同号 \n");
  44. str.append(",a.ORD_SEQ --订单号 \n");
  45. str.append(",a.ORD_THK --订单厚度 \n");
  46. str.append(",a.ORD_WTH --订单宽度 \n");
  47. str.append(",a.ORD_WGT --订单重量 \n");
  48. str.append(",a.ORD_WGT_MIN --订单下限 \n");
  49. str.append(",a.ORD_WGT_MAX --订单上限 \n");
  50. str.append(",a.ORD_INDIA --订单内径 \n");
  51. str.append(",a.ORD_OUTDIA --订单外径 \n");
  52. str.append("FROM c_tbf03_spec_mill a, \n");
  53. str.append("c_tbk02_coil_comm b \n");
  54. str.append("WHERE a.COIL_NO = b.COIL_NO \n");
  55. str.append("and a.ROLL_MANA_NO = :1 \n");
  56. str.append("and a.REG_DTIME between :2||'000000' and :3||'999999' \n");
  57. str.append("and b.MILL_DTIME between :4||'000000' and :5||'999999' \n");
  58. str.append("and b.ORD_NO = :6 \n");
  59. str.append("and b.ORD_SEQ = :7 \n");
  60. str.append("ORDER BY a.ROLL_MANA_NO,a.ROLL_COIL_SEQ \n");
  61. String sql = str.toString();
  62. cro=this.getDao("KgDao").ExcuteQuery(sql);
  63. System.out.println(cro);
  64. return cro;
  65. }
  66. /**
  67. * 连退成品充当时判断订单材质项目与钢卷材质是否匹配
  68. * @author KM
  69. */
  70. public CoreReturnObject compareOrdCoilQlty(String coilNo,String ordNO,String ordSeq) {
  71. CoreReturnObject cro = new CoreReturnObject();
  72. //获取订单要求材质项目sql
  73. String Sql1 = XmlSqlParsersFactory.getSql("UIE043010_ord_01.select");
  74. //获取钢卷对应的材质项目sql
  75. String Sql2 = XmlSqlParsersFactory.getSql("UIE043010_ord_02.select");
  76. //查询钢卷是否 在改判中
  77. String Sql3 = XmlSqlParsersFactory.getSql("UIE043010_ord_03.select");
  78. Object[] ordParams = new Object[]{ordNO,ordSeq,ordNO,ordSeq};
  79. StringBuffer QLTY_ORD_DESC = new StringBuffer("");
  80. StringBuffer QLTY_COIL_DESC = new StringBuffer("");
  81. int ordEqual = 0; //表示材质与订单匹配一致;
  82. try {
  83. //查询钢卷是否 在改判中,处于改判中的钢卷不能充当
  84. ArrayList coilGP_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql3,new String[] {coilNo});
  85. if(coilGP_List == null || 0 == coilGP_List.size()) {
  86. cro.setV_errMsg("GP"); // CoreClientParam.ReturnInfo
  87. //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject
  88. return cro;
  89. }
  90. //获取订单要求的材质项目
  91. ArrayList ordList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql1,ordParams);
  92. System.out.println("ordQlty_sql------- " + Sql1);
  93. //获取钢卷对应的材质项目
  94. ArrayList coilQlty_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql2,new String[] {coilNo});
  95. System.out.println("coilQlty_sql------- " + Sql2);
  96. if(0 == ordList.size() || 0 == coilQlty_List.size()) {
  97. cro.setV_errMsg(QLTY_ORD_DESC.toString()); // CoreClientParam.ReturnInfo
  98. //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject
  99. return cro;
  100. }
  101. Double val_8050 = Double.valueOf(0); //存放伸长率转换后的值
  102. DecimalFormat df = new DecimalFormat("#0.000");
  103. for (int j = 0; j < ordList.size(); j++) {
  104. Map map = (Map) ordList.get(j);
  105. String QLTY_CD1 = map.get("QLTY_CD").toString();
  106. Object QLTY_CD_CFNM1 = map.get("QLTY_CD_CFNM");
  107. Object QLTY_MIN1 = map.get("QLTY_MIN");
  108. Object QLTY_MAX1 = map.get("QLTY_MAX");
  109. Object QLTY_DEC_CD1 = map.get("QLTY_DEC_CD");
  110. if(QLTY_MIN1 == null) QLTY_MIN1 = "";
  111. if(QLTY_MAX1 == null) QLTY_MAX1 = "";
  112. if(QLTY_DEC_CD1 == null) QLTY_DEC_CD1 = "";
  113. String dxDesc = (QLTY_MIN1 == "" ? "" : (QLTY_MIN1 + "(最小)")) + (QLTY_MAX1 == "" ? "" : (QLTY_MAX1 + "(最大)"));
  114. if(!StringUtils.isEmpty(QLTY_DEC_CD1.toString()) && !"B".equals(QLTY_DEC_CD1.toString())) {
  115. QLTY_ORD_DESC.append(QLTY_CD1+" " + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  116. } else { //对伸长率、屈服强度、抗拉强度进行匹配
  117. int qltyEqual = 0; //表示单个材质没找到匹配的;
  118. String qlty_VAL = "";
  119. String qlty_coil_cd = ""; //伸长率EL05
  120. String isEL = "" ; //表示钢卷材质项目中是否有伸长率
  121. for (int t = 0; t < coilQlty_List.size(); t++) {
  122. Map tMap = (Map) coilQlty_List.get(t);
  123. String PROD_CD = tMap.get("QLTY_CD").toString();
  124. Object PROD_CD_CFNM = tMap.get("QLTY_CD_CFNM"); //名称
  125. Object PROD_VAL = tMap.get("QLTY_VAL_WK"); //实绩值
  126. if(PROD_VAL == null) PROD_VAL = "";
  127. if(QLTY_CD1.equals(PROD_CD)) {
  128. int isHege = 1; //
  129. if(!"".equals(QLTY_MIN1)) {
  130. if("".equals(PROD_VAL))
  131. isHege =0;
  132. else if(Double.valueOf(PROD_VAL.toString()) < Double.valueOf(QLTY_MIN1.toString()))
  133. isHege =0;
  134. }
  135. if(!"".equals(QLTY_MAX1)) {
  136. if(!"".equals(PROD_VAL)) {
  137. if(Double.valueOf(PROD_VAL.toString()) > Double.valueOf(QLTY_MAX1.toString()))
  138. isHege =0;
  139. }
  140. }
  141. if(isHege == 0) {
  142. qltyEqual = 2; //表示匹配了但不合格
  143. } else
  144. qltyEqual = 1; //表示匹配了
  145. break; //找到了匹配的材质项目就结束当前for循环
  146. } else if("EL".equals(strIsStarwith(PROD_CD))) { //伸长率
  147. isEL = "TRUE"; //有伸长率
  148. qlty_VAL = PROD_VAL.toString();
  149. if("EL05".equals(PROD_CD)) {
  150. qlty_coil_cd = "EL05";
  151. }
  152. }
  153. }
  154. if("EL".equals(strIsStarwith(QLTY_CD1)) && qltyEqual == 0) { //伸长率
  155. int isHege = 1;
  156. if("TRUE".equals(isEL) && !StringUtils.isEmpty(qlty_VAL)) {
  157. if("EL05".equals(qlty_coil_cd)) { //充当钢卷伸长率为A80
  158. val_8050 = Double.valueOf(df.format(Double.valueOf(qlty_VAL)*1.207)); //A80转换成A50
  159. } else if("EL05".equals(QLTY_CD1)) { //订单伸长率为A80
  160. val_8050 = Double.valueOf(df.format(Double.valueOf(qlty_VAL)*0.829)); //A50转换成A80
  161. } else {
  162. isHege = 2;
  163. val_8050 = null;
  164. }
  165. }
  166. if(!"".equals(QLTY_MIN1) && val_8050 != null) {
  167. if(val_8050 < Double.valueOf(QLTY_MIN1.toString()))
  168. isHege =0;
  169. }
  170. if(!"".equals(QLTY_MAX1) && val_8050 != null) {
  171. if(val_8050 > Double.valueOf(QLTY_MAX1.toString()))
  172. isHege =0;
  173. }
  174. if(isHege == 0)
  175. qltyEqual = 3; //表示伸长率转换后不合格
  176. else if(isHege == 2)
  177. qltyEqual = 5; //表示伸长率中没有A80项目
  178. else
  179. qltyEqual = 4; //表示不匹配但转换后合格
  180. }
  181. if(qltyEqual == 1) {
  182. QLTY_ORD_DESC.append(QLTY_CD1+" " + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  183. } else if(qltyEqual == 0 || qltyEqual == 5) {
  184. QLTY_ORD_DESC.append(QLTY_CD1+"【不匹配】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  185. ordEqual = 1; //标识不匹配
  186. } else if(qltyEqual == 2) {
  187. QLTY_ORD_DESC.append(QLTY_CD1+"【不合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  188. } else if(qltyEqual == 3) {
  189. QLTY_ORD_DESC.append(QLTY_CD1+"【转换后" + val_8050 + "不合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  190. ordEqual = 1; //标识不匹配
  191. } else if(qltyEqual == 4) {
  192. QLTY_ORD_DESC.append(QLTY_CD1+"【转换后" + val_8050 + "合格】" + QLTY_CD_CFNM1.toString() + " " + dxDesc + "\n");
  193. ordEqual = 1; //标识不匹配
  194. }
  195. }
  196. }
  197. for (int n = 0; n < coilQlty_List.size(); n++) {
  198. Map tMap = (Map) coilQlty_List.get(n);
  199. String PROD_CD = tMap.get("QLTY_CD").toString();
  200. Object PROD_CD_CFNM = tMap.get("QLTY_CD_CFNM"); //名称
  201. Object PROD_VAL = tMap.get("QLTY_VAL_WK"); //实绩值
  202. if(PROD_VAL == null) PROD_VAL = "";
  203. QLTY_COIL_DESC.append(PROD_CD+" " + PROD_CD_CFNM.toString() + " " + (PROD_VAL == ""? "" : (PROD_VAL + "(实际值)" )) + "\n");
  204. }
  205. } catch (Exception e) {
  206. e.printStackTrace();
  207. }
  208. String msg = QLTY_COIL_DESC.toString();
  209. if(!StringUtils.isEmpty(msg))
  210. msg = "◆钢卷" + coilNo + "对应的材质实绩:\n" + msg;
  211. if(!StringUtils.isEmpty(QLTY_ORD_DESC.toString()))
  212. msg = msg + "\n◆订单" + ordNO + "-" + ordSeq + "要求材质项目:\n" + QLTY_ORD_DESC.toString();
  213. cro.setV_errMsg(msg); // CoreClientParam.ReturnInfo
  214. cro.setV_errCode(ordEqual); //对应客户端显示CoreClientParam.ReturnCode
  215. //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject
  216. return cro;
  217. }
  218. /**
  219. * 连退成品充当时不匹配的钢卷材质转换成订单要求材质保存到TBB02_WORK_QLTY_MS表中
  220. * 此方法暂时没用到
  221. * @author KM
  222. */
  223. public CoreReturnObject coilQltyToOrd(String coilNo,String ordNO,String ordSeq,String REG_ID) {
  224. CoreReturnObject cro = new CoreReturnObject();
  225. //获取订单要求材质项目sql
  226. String Sql1 = XmlSqlParsersFactory.getSql("UIE043010_ord_01.select");
  227. //获取钢卷对应的材质项目sql
  228. String Sql2 = XmlSqlParsersFactory.getSql("UIE043010_ord_02.select");
  229. Object[] ordParams = new Object[]{ordNO,ordSeq,ordNO,ordSeq};
  230. String msg = "";
  231. try {
  232. //获取订单要求的材质项目
  233. ArrayList ordList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql1,ordParams);
  234. System.out.println("ordQlty_sql------- " + Sql1);
  235. //获取钢卷对应的材质项目
  236. ArrayList coilQlty_List = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(Sql2,new String[] {coilNo});
  237. System.out.println("coilQlty_sql------- " + Sql2);
  238. if(0 == ordList.size() || 0 == coilQlty_List.size()) {
  239. cro.setV_errMsg(msg);
  240. return cro;
  241. }
  242. Object val_8050 = null; //存放伸长率转换后的值
  243. DecimalFormat df = new DecimalFormat("#0.000");
  244. for (int j = 0; j < coilQlty_List.size(); j++) {
  245. Map map = (Map) coilQlty_List.get(j);
  246. String C_SMP_NO = map.get("SMP_NO").toString();
  247. String C_SMP_CUT_LOC = map.get("SMP_CUT_LOC").toString();
  248. String C_QLTY_CD = map.get("QLTY_CD").toString();
  249. Object C_QLTY_VAL_WK = map.get("QLTY_VAL_WK"); //实绩值
  250. Object C_QLTY_UNIT_WK = map.get("QLTY_UNIT_WK");
  251. Object C_QLTY_TYPE_WK = map.get("QLTY_TYPE_WK");
  252. Object C_QLTY_WK_TP = map.get("QLTY_WK_TP");
  253. Object C_UPDATE_NO_TP = map.get("UPDATE_NO_TP");
  254. Object C_QLTY_CD_AFTER = map.get("QLTY_CD_AFTER");
  255. if(C_QLTY_VAL_WK == null) C_QLTY_VAL_WK = "";
  256. if(C_QLTY_UNIT_WK == null) C_QLTY_UNIT_WK = "";
  257. if(C_QLTY_TYPE_WK == null) C_QLTY_TYPE_WK = "";
  258. if(C_QLTY_WK_TP == null) C_QLTY_WK_TP = "";
  259. if(C_UPDATE_NO_TP == null) C_UPDATE_NO_TP = "";
  260. if(C_QLTY_CD_AFTER == null) C_QLTY_CD_AFTER = "";
  261. val_8050 = C_QLTY_VAL_WK;
  262. //只对伸长率、屈服强度、抗拉强度不匹配时进行转换
  263. if(!"XX".equals(strIsStarwith(C_QLTY_CD))) {
  264. for (int t = 0; t < ordList.size(); t++) {
  265. Map tMap = (Map) ordList.get(t);
  266. String PROD_CD = tMap.get("QLTY_CD").toString();
  267. if(C_QLTY_CD.equals(PROD_CD)) {
  268. break; //找到了匹配的材质项目就结束当前for循环
  269. } else if(!"XX".equals(strIsStarwith(PROD_CD))) {
  270. if("EL".equals(strIsStarwith(C_QLTY_CD)) && "EL".equals(strIsStarwith(PROD_CD))) { //伸长率
  271. if("EL05".equals(C_QLTY_CD) && !StringUtils.isEmpty(C_QLTY_VAL_WK.toString())) { //充当钢卷伸长率为A80
  272. val_8050 = df.format(Double.valueOf(C_QLTY_VAL_WK.toString())*1.207); //A80转换成A50
  273. } else if("EL05".equals(PROD_CD) && !StringUtils.isEmpty(C_QLTY_VAL_WK.toString())) { //订单伸长率为A80
  274. val_8050 = df.format(Double.valueOf(C_QLTY_VAL_WK.toString())*0.829); //A50转换成A80
  275. }
  276. C_QLTY_CD_AFTER = C_QLTY_CD;
  277. C_QLTY_CD = PROD_CD;
  278. C_QLTY_VAL_WK = val_8050;
  279. } else if("YS".equals(strIsStarwith(C_QLTY_CD)) && "YS".equals(strIsStarwith(PROD_CD))) {
  280. C_QLTY_CD_AFTER = C_QLTY_CD;
  281. C_QLTY_CD = PROD_CD;
  282. } else if("TE".equals(strIsStarwith(C_QLTY_CD)) && "TE".equals(strIsStarwith(PROD_CD))) {
  283. C_QLTY_CD_AFTER = C_QLTY_CD;
  284. C_QLTY_CD = PROD_CD;
  285. }
  286. }
  287. }
  288. }
  289. //检查是否存在同样的材质项目
  290. String sql3 = XmlSqlParsersFactory.getSql("UIE043010_WORK_QLTY_MS.select");
  291. ArrayList coilMsList = (ArrayList) this.getDao("KgDao").ExcuteQueryReturnList(sql3,new Object[]{C_SMP_NO,C_SMP_CUT_LOC,C_QLTY_CD});
  292. if(null == coilMsList || 0 == coilMsList.size()){
  293. //插入到质保书材质转换表中
  294. insertWQMS(C_SMP_NO, C_SMP_CUT_LOC, C_QLTY_CD, C_QLTY_VAL_WK, C_QLTY_UNIT_WK,
  295. C_QLTY_TYPE_WK, C_QLTY_WK_TP, C_UPDATE_NO_TP, REG_ID, C_QLTY_CD_AFTER);
  296. }
  297. }
  298. } catch (Exception e) {
  299. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  300. e.printStackTrace(new PrintStream(baos));
  301. String exception = baos.toString();
  302. cro.setV_errMsg("Error : " + exception); // CoreClientParam.ReturnInfo
  303. e.printStackTrace();
  304. return cro;
  305. }
  306. cro.setV_errMsg(msg); // CoreClientParam.ReturnInfo
  307. //cro.setV_errCode(Integer.valueOf(state)); //对应客户端显示CoreClientParam.ReturnCode
  308. //cro.setResult("setResult:" + state); //CoreClientParam.ReturnObject
  309. return cro;
  310. }
  311. protected void insertWQMS(Object SMP_NO,Object SMP_CUT_LOC,Object QLTY_CD,Object QLTY_VAL_WK,Object QLTY_UNIT_WK,Object QLTY_TYPE_WK
  312. ,Object QLTY_WK_TP,Object UPDATE_NO_TP,Object REG_ID,Object QLTY_CD_AFTER) throws SQLException {
  313. String sql = XmlSqlParsersFactory.getSql("UIE043010_WORK_QLTY_MS.insert");
  314. Object[] param2 = new Object[11];
  315. param2[0] = SMP_NO; //试样号
  316. param2[1] = SMP_CUT_LOC;
  317. param2[2] = QLTY_CD;
  318. param2[3] = QLTY_VAL_WK;
  319. param2[4] = QLTY_UNIT_WK;
  320. param2[5] = QLTY_TYPE_WK;
  321. param2[6] = QLTY_WK_TP;
  322. param2[7] = UPDATE_NO_TP;
  323. param2[8] = "UIE043010";
  324. param2[9] = REG_ID;
  325. param2[10] = QLTY_CD_AFTER;
  326. this.getDao("KgDao").ExcuteNonQuery(sql, param2);
  327. }
  328. /**
  329. * 判断材质代码是否是以EL、YS、TE开头
  330. * @return
  331. */
  332. public String strIsStarwith(String qltyCD) {
  333. if(qltyCD.startsWith("EL"))
  334. return "EL";
  335. else if(qltyCD.startsWith("YS"))
  336. return "YS";
  337. else if(qltyCD.startsWith("TE"))
  338. return "TE";
  339. else
  340. return "XX";
  341. }
  342. }