package xin.glue.ui.J.J02; 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.vo.PosParameter; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; public class ModifyShipProgStatusOfShip extends PosActivity { public String runActivity(PosContext context) { //UPDATE TBJ01_SHIP_DIR String[] pShipProgCd = (String[]) context.get("SHIP_PROG_CD" ); //SET SHIP_PROG_CD = :1 String[] pShipDirNo = (String[]) context.get("SHIP_DIRNO" ); //WHERE SHIP_DIRNO = :2 int iCnt = 0; if( pShipDirNo != null ) { iCnt = pShipDirNo.length; } logger.logInfo("ModifyShipProgStatusOfShip : 中的钢卷数目iCnt = ["+ iCnt +"]"); //发货表中的发货指示状态 String ship_prog_cd = null; //判断是否全部选择的标志位 boolean note = true; PosParameter param = null; //这里改变发货表的状态的时候,必须注意的是:同一发货指示号下的钢卷没有全部发完的情况下不能修改发货指示表的状态 for( int i = 0; i < iCnt; i++ ) { PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, pShipDirNo[i]); //查询钢卷公共表中的SHIP_PROG_CD状态。看是否全部改变 PosRowSet rows = getDao("mesdao").find("UIJ020200_select_ship", param3); while(rows.hasNext()){ //循环的取出每一个值,并且判断是否所有的值全部都改变成希望的结果 PosRow row = rows.next(); ship_prog_cd = (String) row.getAttribute("SHIP_PROG_CD"); logger.logInfo(pShipDirNo[i]+" ModifyShipProgStatusOfShip查看发货指示号的状态 : : "+ship_prog_cd); //当存在值为06的时候说明钢卷的行车命令已经执行完,标志位为flase。 //没有到达06,钢卷不会在界面上显示。但是如果部分卷达到后就出具发货明细,那么达到的部分全部装完也不要能改变发货状态 while(ship_prog_cd.equals("06")||ship_prog_cd.equals("05")||ship_prog_cd.equals("04")||ship_prog_cd.equals("03")){ note = false; break; } } logger.logInfo("ModifyShipProgStatusOfShip 查看发货指示号下的钢卷是否全部装完标志 : "+ note); if(note == true){ //这里需要判断同一发货指示下的钢卷是否全部保存,如果没有的话不能改变发货指示的状态 //这里需要给变发货表的状态,从5-7 param = new PosParameter(); param.setValueParamter( 0, pShipProgCd[i] ); param.setValueParamter( 1, pShipDirNo[i] ); getDao("mesdao").update("UIJ020400.ModifyShipProgStatusOfShip.Save", param); } } return PosBizControlConstants.SUCCESS; } }