package xin.glue.ui.B.B01; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.vo.PosParameter; /** * 厂内成分参数保存(界面ID: UIB010050) * @author 梅贵平 * @date 2008-10-15 */ public class SaveFacChemParameter extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = this.getDao("mesdao"); String[] rowStuts0 = (String[])context.get("rowStuts0");//表1的删除、插入标记 String[] rowStuts = (String[])context.get("rowStuts");//表2、3、4、5的更新、删除、插入标记 String[] FAC_STL_GRD = (String[])context.get("FAC_STL_GRD"); //厂内钢号 String[] FAC_CODE = (String[])context.get("FAC_CODE"); //交货状态 //String[] F_CODE = (String[])context.get("F_CODE"); //生产线 String[] HIDDENGRD = (String[])context.get("HIDDENGRD");//更新前的厂内钢号 String[] HIDDENFAC = (String[])context.get("HIDDENFAC");//更新前的厂内钢号 String[] CHEM_CD = (String[])context.get("CHEM_CD"); String[] COMP_YN = (String[])context.get("COMP_YN"); String[] CHEM_AIM = (String[])context.get("CHEM_AIM"); String[] CHEM_MIN = (String[])context.get("CHEM_MIN"); String[] CHEM_MAX = (String[])context.get("CHEM_MAX"); String[] EX = (String[])context.get("EX"); PosParameter param = null; //用于新增厂内钢号操作的零时中间量,这里new 是为了下面“新增厂内钢号判断”不出现空指针异常 int insertNumber = -1; //用于获取是哪个进行了新增操作 if(rowStuts0 != null)//判断是否对datagrid1表做了更新、删除、插入操作 { int len0 = rowStuts0.length; int j = 0;//数组的下标 int m = 0; for(int i=0; i < len0; i++) { if("u".equals(rowStuts0[i]))//更新厂内钢号 { //更新TBB01_FAC_INGR 表中的厂内钢号 param = new PosParameter(); param.setWhereClauseParameter(0, FAC_STL_GRD[i]);//更新后的厂内钢号 param.setWhereClauseParameter(1, FAC_CODE[i]);//更新后的生产线 param.setWhereClauseParameter(2, HIDDENGRD[i]);//更新钱的厂内钢号 param.setWhereClauseParameter(3, HIDDENFAC[i]);//生产线 dao.update("UIB010050_01.UPDATE", param); //更新TBB01_MAP_INGR 表中的厂内钢号 param = new PosParameter(); param.setWhereClauseParameter(0, FAC_STL_GRD[i]);//更新后的厂内钢号 param.setWhereClauseParameter(1, FAC_CODE[i]);//更新后的生产线 param.setWhereClauseParameter(2, HIDDENGRD[i]);//更新钱的厂内钢号 param.setWhereClauseParameter(3, HIDDENFAC[i]);//生产线 dao.update("UIB010050.UPDATE.MAPINGR", param); } if("d".equals(rowStuts0[i]))//删除厂内钢号 { param = new PosParameter(); param.setWhereClauseParameter(0, HIDDENGRD[i]);//删除某厂内钢号 param.setWhereClauseParameter(1, FAC_CODE[i]);//生产线 dao.delete("UIB010050_01.DELETE",param); } if("i".equals(rowStuts0[i]))//新增厂内钢号,若无异常,则最多只有1个 { insertNumber = i; } }//for end }//if end //新增了厂内钢号 if(insertNumber >= 0 ) { if(rowStuts != null)//判断是否增加了新成分 { int j=0; int len = rowStuts.length; for(int i=0; i < len; i++) { j = 0; param = new PosParameter(); param.setValueParamter(j++, FAC_STL_GRD[insertNumber]);//厂内钢号 param.setValueParamter(j++, FAC_CODE[insertNumber]);//生产线 param.setValueParamter(j++, CHEM_CD[i]);//成分名 param.setValueParamter(j++, COMP_YN[i]);//复合元素区分 param.setValueParamter(j++, CHEM_AIM[i]);//目标成分值 param.setValueParamter(j++, CHEM_MIN[i]);//成分最小值 param.setValueParamter(j++, CHEM_MAX[i]);//成分最大值 //param.setValueParamter(j++, F_CODE[0]);//生产线 dao.insert("UIB010050_01.INSERT", param); }//for end }//if end }//if end /* * 非新增厂内钢号(仅仅做了更新,如成分最大,最小值、厂内钢号的更新) * 厂内钢号的更新不用再考虑,在前面的代码中做了处理 * 若EX为y,表示要进行插入新成分操作,否则为更新成分操作 * * */ String[] FACPARAM = (String[])context.get("FACPARAM");//获得更新后的厂内钢号,用于更新成分操作 String[] FACCODE = (String[])context.get("FACCODE");//获得生产线 /* * insertNumber == -1时,说明无新增厂内钢号操作,则允许在大条件(非新增厂内钢号操作)的各种操作 * */ if(rowStuts != null && insertNumber == -1) { int j = 0; int len = rowStuts.length; for(int i = 0; i < len; i++) { j = 0; if("y".equals(EX[i]) &&( !"".equals(CHEM_AIM[i])|| !"".equals(CHEM_MIN[i]) || !"".equals(CHEM_MAX[i]) ) )//插入新的元素 { param = new PosParameter(); param.setValueParamter(j++, FACPARAM[0]); param.setValueParamter(j++, FACCODE[0]); param.setValueParamter(j++, CHEM_CD[i]); param.setValueParamter(j++, COMP_YN[i]); param.setValueParamter(j++, CHEM_AIM[i]); param.setValueParamter(j++, CHEM_MIN[i]); param.setValueParamter(j++, CHEM_MAX[i]); //param.setValueParamter(j++, F_CODE[0]);//生产线 dao.insert("UIB010050_01.INSERT" , param); } if("".equals(EX[i]))//对元素信息更新,非插入 { if("".equals(CHEM_AIM[i])&&"".equals(CHEM_MIN[i])&&"".equals(CHEM_MAX[i])) { param = new PosParameter(); param.setWhereClauseParameter(0, FACPARAM[0]);//厂内钢号 param.setWhereClauseParameter(1, FACCODE[0]);//生产线 param.setWhereClauseParameter(2, CHEM_CD[i]);//成分代码 dao.delete("UIB010050_02.DELETE",param); } else { param = new PosParameter(); param.setWhereClauseParameter(j++, CHEM_AIM[i]); param.setWhereClauseParameter(j++, CHEM_MIN[i]); param.setWhereClauseParameter(j++, CHEM_MAX[i]); param.setWhereClauseParameter(j++, FACPARAM[0]); param.setWhereClauseParameter(j++, CHEM_CD[i]); param.setWhereClauseParameter(j++, FACCODE[0]); dao.update("UIB010050_02.UPDATE", param); } } }//for end }//if end /* String[]FAC_DETAIL = (String[])context.get("FAC_DETAIL"); param = new PosParameter(); param.setWhereClauseParameter(0, FAC_DETAIL[0]); param.setWhereClauseParameter(1, FACPARAM[0]); param.setWhereClauseParameter(2, FACCODE[0]); dao.update("UIB010050_03.UPDATE", param);*/ return PosBizControlConstants.SUCCESS; } }