<%@ page contentType="text/xml; charset=GBK" %> <%@ page import="java.util.*"%> <%@ page import="com.zcsoft.dbvisit.DB"%> <%@ page import="com.wxzd.wms.util.ServerUtil"%> <% String errorInfo = null, pddh = null, jhs = null, kwbh = null; int wsmsl = 0;//此次保存后,还剩余的未扫描数量 session = request.getSession(false); if (session != null && session.getAttribute("userInfo") != null) { pddh = request.getParameter("pddh"); jhs = request.getParameter("jhs");//传递过来的表计条码 kwbh = request.getParameter("kwbh"); //入库单号。如果还没有,则首先让用户选择入库单号 if (pddh != null && pddh.length() > 1//1是中间的分隔符 ) { try { //修改盘点表计明细记录 List sqls = new ArrayList(2), values = new ArrayList(2); if (jhs != null && jhs.length() > 2)//2是前后两个个分隔符 { String updateStmt = DB.prepareUpdateStmt("w_pdbjxx", "sfsm", new String[]{"pddh", "jh"}); String chkSql = "SELECT sfsm,jh FROM w_pdbjxx WHERE pddh=? AND (jh=? OR MADE_NO=?)"; if (kwbh != null && kwbh.length() > 0) { String zlbhFilter = " AND kwbh='" + kwbh + "'"; chkSql += zlbhFilter; updateStmt += zlbhFilter; } StringTokenizer jhList = new StringTokenizer(jhs, "|"); while (jhList.hasMoreTokens()) { String jh = jhList.nextToken(), xh = null; List data = db1.getVDataWithPrepareStatement(chkSql, new Object[]{pddh, jh, jh}); if (data.size() > 1) { throw new IllegalArgumentException("盘点库位上的表计列表中,存在匹配输入条码或出厂编号为 " + jh + " 的多条记录"); } if (data.size() == 0) { throw new IllegalArgumentException("盘点库位上的表计列表中,没有条码或出厂编号为 " + jh + " 的表计"); } data = (List)data.get(0); if ("1".equals(data.get(0))) { throw new IllegalStateException("条码" + jh + "已经扫描"); } sqls.add(updateStmt); values.add(new Object[]{"1", pddh, data.get(1)}); } //修改盘点库位明细的数量 StringBuffer updateInstStmt = new StringBuffer("UPDATE w_pdmx SET jssl="); updateInstStmt.append(" (SELECT COUNT(*) FROM w_pdbjxx X"); updateInstStmt.append(" WHERE pddh=? AND sfsm=1 AND w_pdmx.kwbh=X.kwbh) WHERE pddh=?"); if (kwbh != null && kwbh.length() > 0) { updateInstStmt.append(" AND kwbh='").append(kwbh).append('\''); } sqls.add(updateInstStmt.toString()); values.add(new Object[]{pddh, pddh}); updateInstStmt.setLength(0); updateInstStmt.append("UPDATE w_pdmx SET yksl=jssl-kssl"); updateInstStmt.append(" WHERE pddh=?"); if (kwbh != null && kwbh.length() > 0) { updateInstStmt.append(" AND kwbh='").append(kwbh).append('\''); } sqls.add(updateInstStmt.toString()); values.add(pddh); } else if ("1".equals(request.getParameter("end")))//结束扫描 { StringBuffer updateInstStmt = new StringBuffer(" UPDATE w_pdmx SET jssl=0"); updateInstStmt.append(" WHERE pddh=? AND jssl IS NULL"); if (kwbh != null && kwbh.length() > 0) { updateInstStmt.append(" AND kwbh='").append(kwbh).append('\''); } sqls.add(updateInstStmt.toString()); values.add(pddh); updateInstStmt.setLength(0); updateInstStmt.append("UPDATE w_pdmx SET smzt=1,yksl=jssl-kssl"); updateInstStmt.append(" WHERE pddh=?"); if (kwbh != null && kwbh.length() > 0) { updateInstStmt.append(" AND kwbh='").append(kwbh).append('\''); } sqls.add(updateInstStmt.toString()); values.add(pddh); } //提交数据库请求 //System.out.println("sqls = " + sqls); db1.preparedUpdate(sqls, values, true); if (kwbh != null && kwbh.length() > 0) { wsmsl = ServerUtil.getInt(db1.getSingleField("SELECT COUNT(*) FROM w_pdbjxx WHERE pddh=? AND kwbh=? AND sfsm=0" , new Object[]{pddh, kwbh})); if (wsmsl == 0 || !db1.hasAnyData("SELECT 2 FROM w_pdmx WHERE smzt=0 AND pddh=?", pddh) ) {//没有其它盘点库位明细 wsmsl = -1; } } else { wsmsl = ServerUtil.getInt(db1.getSingleField("SELECT COUNT(*) FROM w_pdbjxx WHERE pddh=? AND sfsm=0", pddh)); if (wsmsl == 0 && !db1.hasAnyData("SELECT 2 FROM w_pdmx M JOIN w_pd D ON M.pddh=D.pddh WHERE M.smzt=0 AND D.zt<2", null) ) { //没有其它盘点单 wsmsl = -2; } } } catch (Exception ex) { ex.printStackTrace(); errorInfo = ex.getMessage(); if (errorInfo == null) errorInfo = ex.toString(); } } else {//弹出选择入库单号的界面 if (pddh == null || pddh.length() == 0) errorInfo = "未传递盘点单号"; else errorInfo = "未传递表计条码"; } } else { errorInfo = "未登录"; } %> <% out.write(""); %>