package com.steering.pss.judge.DAL;

import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import CoreFS.SA06.CoreReturnObject;
import CoreFS.SC01.CoreConstantData;

import com.steering.comm.converter.CoreConverter;
import com.steering.comm.db.DBCommon;
import com.steering.comm.tools.EntityTool;
import com.steering.comm.tools.SqlBuilder;
import com.steering.pss.judge.comm.JudgeHelper;
import com.steering.pss.judge.model.CraftLg2CicEntity;
import com.steering.pss.judge.model.PlnSteelforfurnaceEntity;
import com.steering.pss.judge.model.AuditMeltingDataEntity;
import com.steering.pss.judge.model.ComBaseChemEntity;
import com.steering.pss.judge.model.QcmJhyElementsEntity;

public class AuditMeltingDataDAL extends DBCommon{
	
//	public CoreReturnObject query(String downtimeB, String downtimeE,
//			String judgeFlag, String plineCode){
//		SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.query");
//		b.AppendLn("", condition)
//	}
	
//	/**
//	 * 获取检化验601开头的数据
//	 * @param stoveNo
//	 * @return
//	 */
//	public CoreReturnObject query(String downtimeB, String downtimeE,
//			String judgeFlag, String plineCode, String[] validData){
//		String strValidData = CoreConverter.toSqlConditionString("C.DEPARTMENT_CODE", validData);
//		Connection con = this.getDao(CoreConstantData.sysbeanstr).getConnection();
//		CoreReturnObject cro = new CoreReturnObject();
//		try{
//			SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.getBaseElements");
//			List<ComBaseChemEntity> baseElementsList = EntityTool.getEntitysBySqlNoClsCon(
//					b.toString(), con, ComBaseChemEntity.class);
//			
//			b = new SqlBuilder("AuditMeltingDataDAL.query");
//			b.AppendLn("AND B.DOWNTIME >= TO_DATE({0}, 'YYYY-MM-DD HH24:MI:SS')", !downtimeB.equals(""));
//			b.AppendLn("AND B.DOWNTIME <= TO_DATE({1}, 'YYYY-MM-DD HH24:MI:SS')", !downtimeE.equals(""));
//			b.AppendLn("AND B.JUDGE_FLAG = {2}", !judgeFlag.equals(""));
//			b.AppendLn("AND B.EF_PLINE_CODE = {3}", !plineCode.equals(""));
//			b.AppendLn(strValidData);
//			b.Fill(new String[]{ downtimeB, downtimeE, judgeFlag, plineCode });
//			
//			List<AuditMeltingDataEntity> jhyElements = EntityTool.getEntitysBySqlNoClsCon(
//					b.toString(), con, AuditMeltingDataEntity.class);
//			
//			for(AuditMeltingDataEntity jhyElement : jhyElements){
//				b = new SqlBuilder("AuditMeltingDataDAL.getQcmJhyElements601F");
//				b.Fill(new String[]{ jhyElement.getStoveNo() });
//				List<AuditMeltingDataEntity> jhyElements601FList = EntityTool.getEntitysBySqlNoClsCon(
//						b.toString(), con, AuditMeltingDataEntity.class);
//				Class<QcmJhyElementsEntity> elementsClass = QcmJhyElementsEntity.class;
//				for(QcmJhyElementsEntity jhyElements601F : jhyElements601FList){
//					Method[] methods = elementsClass.getMethods();
//					for(Method method : methods){
//						if(method.getName().startsWith("get")){
//							String methodsName = method.getName().substring(3);
//							for(ComBaseChemEntity baseElements : baseElementsList){
//								if(baseElements.getChemName().toUpperCase().equals(
//										methodsName.toUpperCase())){
//									try {
//										Method setMethod = elementsClass.getMethod("set" + methodsName, String.class);
//										String value601F = method.invoke(jhyElements601F) == null ? "" : method.invoke(jhyElements601F).toString();
//										String value601 = method.invoke(jhyElement) == null ? "" : method.invoke(jhyElement).toString();
//										if(!value601F.equals("") && !value601.equals(value601F)){
//											setMethod.invoke(jhyElement, value601F);
//										}
//									} catch (Exception e) {
//										e.printStackTrace();
//									}
//								}
//							}
//						}
//					}
//				}
//			}
//			
//			
//			cro.setResult(EntityTool.getGsonByEntity(jhyElements));
//			return cro;
//		}catch(Exception ex){
//			cro.setV_errMsg(ex.getMessage());
//			return cro;
//		}finally{
//			try {
//				con.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//	}
//	
//	/**
//	 * 删除检化验成分实绩
//	 * @param stoveNo
//	 * @return
//	 */
//	public CoreReturnObject deleteJhyElements(String stoveNo, String furnaceno){
//		Connection jhyCon = this.getDao("jhyDataSource").getConnection();
//		CoreReturnObject cro = new CoreReturnObject();
//		try{
//			SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.updateSteerChemAuditResult");
//			b.Fill(new String[]{ "-1", stoveNo });
//			Statement st = jhyCon.createStatement();
//			st.executeUpdate(b.toString());
//			st.close();
//			jhyCon.commit();
//			
//			ArrayList<String> sqllist = new ArrayList<String>();
//			b = new SqlBuilder("AuditMeltingDataDAL.deleteJhyElements");
//			b.Fill(new String[]{ stoveNo });
//			sqllist.add(b.toString());
//			b = new SqlBuilder("AuditMeltingDataDAL.updateSteelforfurnace");
//			b.Fill(new String[]{ "00", furnaceno });
//			sqllist.add(b.toString());
//			
//			return this.getDao(CoreConstantData.sysbeanstr).ExcuteTransction(sqllist);
//		}catch(Exception ex){
//			cro.setV_errMsg(ex.getMessage());
//			return cro;
//		}
//		finally{
//			try {
//				jhyCon.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//	}
//	
//	/**
//	 * 获取检化验成分实绩状态
//	 * @param stoveNo
//	 * @return
//	 */
//	public CoreReturnObject getJhyElementsState(String stoveNo){
//		SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.getJhyElementsState");
//		b.Fill(new String[]{ stoveNo });
//		return this.getData(b.toString());
//	}
//	
//	/**
//	 * 获取炼钢炉次计划表状态
//	 * @param stoveNo
//	 * @return
//	 */
//	public CoreReturnObject getPlnSteelforfurnaceState(String furnaceno){
//		SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.getPlnSteelforfurnaceState");
//		b.Fill(new String[]{ furnaceno });
//		return this.getData(b.toString());
//	}
//	
//	/**
//	 * 刷新炼钢炉次计划表
//	 * @param furnaceno
//	 * @return
//	 */
//	public CoreReturnObject refreshSteelforfurnace(String furnaceno){
//		Connection con = this.getDao(CoreConstantData.sysbeanstr).getConnection();
//		CoreReturnObject cro = new CoreReturnObject();
//		cro.setResult(1);
//		try{
//			SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.getPlnSteelforfurnace");
//			b.Fill(new String[]{ furnaceno });
//			PlnSteelforfurnaceEntity steelforfurnace = EntityTool.getEntityBySqlNoClsCon(
//					b.toString(), con, PlnSteelforfurnaceEntity.class);
//			Statement stmt = con.createStatement();
//			QcmJhyElementsEntity jhyElements = getElements(steelforfurnace.getStoveNo(), con);
//			
//			b = new SqlBuilder("AuditMeltingDataDAL.getCraftLg2Cic");
//			b.Fill(new String[]{ steelforfurnace.getCraftNo() });
//			List<CraftLg2CicEntity> craftLg2CicList = EntityTool.getEntitysBySqlNoClsCon(
//					b.toString(), con, CraftLg2CicEntity.class);
//			
//			String judgeFlag = "00";
//			if(!compareElementValue(craftLg2CicList, jhyElements)){
//				judgeFlag = "10";
//			}else{
//				judgeFlag = "20";
//			}
//			b = new SqlBuilder("AuditMeltingDataDAL.updatePlnSteelforfurnace");
//			b.Fill(new String[]{ judgeFlag, steelforfurnace.getFurnaceno() });
//			stmt.executeUpdate(b.toString());
//			b = new SqlBuilder("AuditMeltingDataDAL.updateJhyElements");
//			b.Fill(new String[]{ judgeFlag, steelforfurnace.getStoveNo() });
//			stmt.executeUpdate(b.toString());
//			stmt.close();
//			con.commit();
//			
//			return cro;
//		}catch(Exception ex){
//			cro.setV_errMsg(ex.getMessage());
//			return cro;
//		}finally{
//			try {
//				con.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//	}
//	
//	public static QcmJhyElementsEntity getElements(String stoveNo, Connection con){
//		SqlBuilder b = new SqlBuilder("AuditMeltingDataDAL.getBaseElements");
//		List<ComBaseChemEntity> baseElementsList = EntityTool.getEntitysBySqlNoClsCon(
//				b.toString(), con, ComBaseChemEntity.class);
//		
//		b = new SqlBuilder("AuditMeltingDataDAL.getQcmJhyElements601");
//		b.Fill(new String[]{ stoveNo });
//		QcmJhyElementsEntity jhyElements = EntityTool.getEntityBySqlNoClsCon(
//				b.toString(), con, QcmJhyElementsEntity.class);
//		
//		b = new SqlBuilder("AuditMeltingDataDAL.getQcmJhyElements601F");
//		b.Fill(new String[]{ stoveNo });
//		List<QcmJhyElementsEntity> jhyElements601FList = EntityTool.getEntitysBySqlNoClsCon(
//				b.toString(), con, QcmJhyElementsEntity.class);
//		Class<QcmJhyElementsEntity> elementsClass = QcmJhyElementsEntity.class;
//		for(QcmJhyElementsEntity jhyElements601F : jhyElements601FList){
//			Method[] methods = elementsClass.getMethods();
//			for(Method method : methods){
//				if(method.getName().startsWith("get")){
//					String methodsName = method.getName().substring(3);
//					for(ComBaseChemEntity baseElements : baseElementsList){
//						if(baseElements.getChemName().toUpperCase().equals(
//								methodsName.toUpperCase())){
//							try {
//								Method setMethod = elementsClass.getMethod("set" + methodsName, String.class);
//								String value601F = method.invoke(jhyElements601F) == null ? "" : method.invoke(jhyElements601F).toString();
//								String value601 = method.invoke(jhyElements) == null ? "" : method.invoke(jhyElements).toString();
//								if(!value601F.equals("") && !value601.equals(value601F)){
//									setMethod.invoke(jhyElements, value601F);
//								}
//							} catch (Exception e) {
//								e.printStackTrace();
//							}
//						}
//					}
//				}
//			}
//		}
//		
//		return jhyElements;
//	}
//	
//	private boolean compareElementValue(List<CraftLg2CicEntity> craftLg2CicList, QcmJhyElementsEntity jhyElements){
//		for(CraftLg2CicEntity craftLg2Cic : craftLg2CicList){
//			Class<QcmJhyElementsEntity> elementsClass = QcmJhyElementsEntity.class;
//			try {
//				String chemName = craftLg2Cic.getChemName().equals("As") ? "Asn" : craftLg2Cic.getChemName();
//				Method method = elementsClass.getMethod("get" + chemName);
//				String value = method.invoke(jhyElements) == null ? "" : method.invoke(jhyElements).toString();
//				String express = JudgeHelper.GetExpress(craftLg2Cic.getStdminSign(), craftLg2Cic.getStdmin(),
//						craftLg2Cic.getStdmaxSign(), craftLg2Cic.getStdmax());
//				if(!JudgeHelper.JudgeExpress(value, express)){
//					return false;
//				}
//			} catch (Exception e) {
//				e.printStackTrace();
//			}
//		}
//		
//		return true;
//	}
}
