Files
old_baoxin_wms/tomcat/webapps/sm/pdqr.jsp
2025-09-12 17:05:46 +08:00

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>");
%>