158 lines
5.1 KiB
Plaintext
158 lines
5.1 KiB
Plaintext
<?xml version="1.0" encoding="gb2312"?>
|
|
<%@ page contentType="text/xml; charset=GBK" %>
|
|
<%@ page import="java.util.*"%>
|
|
<%@ page import="com.zcsoft.dbvisit.DB"%>
|
|
<%@ page import="com.wxzd.wms.util.ServerUtil"%>
|
|
<jsp:useBean id="db1" scope="application" class="com.zcsoft.dbvisit.DB" />
|
|
<%
|
|
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("<result status=\"");
|
|
if (errorInfo != null)
|
|
{
|
|
out.write("false\" exception=\"");
|
|
out.write(errorInfo);
|
|
}
|
|
else
|
|
{
|
|
out.write("true\" wsmsl=\"");
|
|
out.write(Integer.toString(wsmsl));
|
|
}
|
|
out.write("\"></result>");
|
|
%>
|
|
|