|
@@ -0,0 +1,408 @@
|
|
|
+package restcontroller.webmanage.sale.wmssend;
|
|
|
+
|
|
|
+import common.YosException;
|
|
|
+import common.data.Row;
|
|
|
+import common.data.Rows;
|
|
|
+import common.data.db.DBConnect;
|
|
|
+import common.data.db.DBSource;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.sql.*;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 向中间表上传单据信息
|
|
|
+ *
|
|
|
+ * @author SJW
|
|
|
+ *
|
|
|
+ */
|
|
|
+public class Wms {
|
|
|
+ private String SQL = null;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构造函数,初始化
|
|
|
+ */
|
|
|
+ public Wms() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传出库指令(销售出库)
|
|
|
+ *
|
|
|
+ * 出入库表头
|
|
|
+ */
|
|
|
+ private int uploadOutStockbill(Row row, String username) throws YosException {
|
|
|
+ DBSource dbSource =new DBSource();
|
|
|
+ dbSource.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
+ dbSource.setUrl("jdbc:sqlserver://192.168.0.98:1433;databasename=DB_meida");
|
|
|
+ dbSource.setUsername("sa");
|
|
|
+ dbSource.setPassword("omh_123");
|
|
|
+ DBConnect dbConnect =new DBConnect(dbSource);
|
|
|
+
|
|
|
+ int OutPlanID = 0;
|
|
|
+
|
|
|
+ // 更新表头
|
|
|
+ String billno = row.getString("billno");
|
|
|
+ String type = "1";// 1:销售出库 2:调拨出库 3:送件单 4:借出
|
|
|
+ String billdate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
|
|
+ .format(row.getString("billdate"));
|
|
|
+ String enterprisename = row.getString("enterprisename");
|
|
|
+ String abbreviation = row.getString("abbreviation");
|
|
|
+ String contact = row.getString("name");
|
|
|
+ String address =row.getString("address");
|
|
|
+ String phonenumber = row.getString("phonenumber");
|
|
|
+ SQL = "insert into TOutInt(BillNo,BillType,CreateDate,IsDeleted,OutDate,SellCompany,SellPerson,Selladdress,Sellphone,Status,createby,ShortName) ";
|
|
|
+ SQL = SQL + "values(";
|
|
|
+ SQL = SQL + "'" + billno + "',";// 出库单号
|
|
|
+ SQL = SQL + "'" + type + "',";// 出库类型
|
|
|
+ SQL = SQL + "GETDATE(),";// 创建日期
|
|
|
+ SQL = SQL + "0,";// 是否已删除
|
|
|
+ SQL = SQL + "'" + billdate + "',";// 出库日期,单据日期
|
|
|
+ SQL = SQL + "'" + enterprisename + "',";// 经销商名称
|
|
|
+ SQL = SQL + "'" + contact + "',";// 经销商联系人
|
|
|
+ SQL = SQL + "'" + address + "',";// 经销商地址
|
|
|
+ SQL = SQL + "'" + phonenumber + "',";// 联系方式
|
|
|
+ SQL = SQL + "0,";// 状态:0:WMS未处理 1:WMS正在出库 2:WMS出库完成 10:ERP出库完成
|
|
|
+ SQL = SQL + "'" + username + "',";
|
|
|
+ SQL = SQL + "'" + abbreviation + "')";// 经销商简称
|
|
|
+ if (!SQL.equals("")) {
|
|
|
+ dbConnect.runSqlUpdate(SQL);
|
|
|
+ Rows rows = dbConnect.runSqlQuery("select top(1) OutPlanID from TOutInt where BillNo='"
|
|
|
+ + billno + "' order by CreateDate desc ");
|
|
|
+
|
|
|
+ if (rows.isNotEmpty()) {
|
|
|
+ OutPlanID = rows.get(0).getInteger("OutPlanID");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return OutPlanID;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传出库指令(销售出库)
|
|
|
+ *
|
|
|
+ * 出入库表体
|
|
|
+ * @throws SQLException
|
|
|
+ */
|
|
|
+ public void uploadOutStockbilldetail(Rows rows, String username) throws YosException {
|
|
|
+ HashMap<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ HashMap<String, ArrayList<String>> bills = new HashMap<String, ArrayList<String>>();
|
|
|
+ DBSource dbSource =new DBSource();
|
|
|
+ dbSource.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
+ dbSource.setUrl("jdbc:sqlserver://192.168.0.98:1433;databasename=DB_meida");
|
|
|
+ dbSource.setUsername("sa");
|
|
|
+ dbSource.setPassword("omh_123");
|
|
|
+ DBConnect dbConnect =new DBConnect(dbSource);
|
|
|
+ DBConnect thisdbConnect =new DBConnect();
|
|
|
+ for(Row row :rows){
|
|
|
+ String billno=row.getString("billno");
|
|
|
+ ArrayList<String> itemnos = null;
|
|
|
+ if (bills.containsKey(billno)) {
|
|
|
+ itemnos = bills.get(billno);
|
|
|
+ } else {
|
|
|
+ itemnos = new ArrayList<String>();
|
|
|
+ }
|
|
|
+ if (!map.containsKey(billno)) {
|
|
|
+ int OutPlanID = uploadOutStockbill(row,username);
|
|
|
+ if (OutPlanID == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ map.put(billno, OutPlanID);
|
|
|
+ }
|
|
|
+ int OutPlanID = map.get(billno);
|
|
|
+ String billdate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
|
|
+ .format(row.getString("billdate"));
|
|
|
+ String itemno = row.getString("itemno");
|
|
|
+ BigDecimal qty = row.getBigDecimal("qty");
|
|
|
+ if (!itemnos.contains(itemno)) {
|
|
|
+ itemnos.add(itemno);
|
|
|
+ bills.put(billno, itemnos);
|
|
|
+ SQL = "insert into TOutDetailInt(OutPlanID,BillNo,CreateDate,IsDeleted,OutDate,MaterialCode,PlanOutQuantity,OutQuantity,Status)";
|
|
|
+ SQL = SQL + " select ";
|
|
|
+ SQL = SQL + " '" + OutPlanID + "',";// 对应出库通知单主表ID
|
|
|
+ SQL = SQL + " '" + billno + "',";// 单据编号
|
|
|
+ SQL = SQL + " GETDATE(),";// 创建日期
|
|
|
+ SQL = SQL + " 0,";// 是否删除
|
|
|
+ SQL = SQL + " '" + billdate + "',";// 出库日期
|
|
|
+ SQL = SQL + " '" + itemno + "',";// 品号
|
|
|
+ SQL = SQL + " " + qty + ",";// 出库数量
|
|
|
+ SQL = SQL + " 0,";// 已出库数量
|
|
|
+ SQL = SQL + " 0";// 状态:0:WMS未处理 1:WMS正在出库 2:WMS出库完成
|
|
|
+ // 10:ERP出库完成
|
|
|
+ } else {
|
|
|
+ SQL = " update TOutDetailInt set PlanOutQuantity=PlanOutQuantity+"
|
|
|
+ + qty
|
|
|
+ + " where OutPlanID='"
|
|
|
+ + OutPlanID
|
|
|
+ + "' and MaterialCode='" + itemno + "'";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!SQL.equals("")) {
|
|
|
+ dbConnect.runSqlUpdate(SQL);
|
|
|
+ thisdbConnect.runSqlUpdate("update st_stockbill_items set wmsuploadflag=2 where st_stockbill_itemsid="+row.getLong("st_stockbill_itemsid"));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// /**
|
|
|
+// * 下载入库指令
|
|
|
+// *
|
|
|
+// * @throws P2Exception
|
|
|
+// * @throws SQLException
|
|
|
+// */
|
|
|
+// public void downloadStockbill() throws Exception {
|
|
|
+// Connection connection = null;
|
|
|
+// PreparedStatement pstmt = null;
|
|
|
+// PreparedStatement pstmt2 = null;
|
|
|
+// ResultSet result = null;
|
|
|
+// try {
|
|
|
+// PaoSetRemote icstockbillSet = P2Server.getP2Server().getPaoSet(
|
|
|
+// "icstockbill",
|
|
|
+// P2Server.getP2Server().getUserInfo("SAMADMIN"));
|
|
|
+// SQL = "SELECT t1.DetailID,t1.SerialNo,t1.MaterialCode FROM TInDetailInt t1 INNER JOIN TMaterialsSerialNo t2 on t1.SerialNo=t2.SerialNo WHERE year(t1.CreateDate)>=2018 and t1.Status=0 and t1.IsDeleted=0 and t2.sysfrom='DRP'";
|
|
|
+// connection = new JdbcConnect().connect();
|
|
|
+// pstmt = connection.prepareStatement(SQL);
|
|
|
+// result = pstmt.executeQuery();
|
|
|
+// while (result.next()) {
|
|
|
+// int DetailID = result.getInt("DetailID");
|
|
|
+// String FMACHINECODE = result.getString("SerialNo");// 机器码
|
|
|
+// String FITEMNO = result.getString("MaterialCode");// 品号
|
|
|
+// PaoSetRemote tmachinecode = P2Server.getP2Server().getPaoSet(
|
|
|
+// "tmachinecode", icstockbillSet.getUserInfo());
|
|
|
+// tmachinecode.setWhere("FMACHINECODE='" + FMACHINECODE
|
|
|
+// + "' and FITEMNO='" + FITEMNO + "'");
|
|
|
+// tmachinecode.reset();
|
|
|
+// PaoSetRemote ttiem = P2Server.getP2Server().getPaoSet("titem",
|
|
|
+// P2Server.getP2Server().getSystemUserInfo());
|
|
|
+// ttiem.setWhere("fitemno='" + FITEMNO + "'");
|
|
|
+// ttiem.reset();
|
|
|
+// if (tmachinecode.count() != 1 || ttiem.isEmpty()) {
|
|
|
+// ttiem.close();
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "不存在或对应货品不存在");
|
|
|
+// continue;// 如果序列号不存在或数量大于1则跳过
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 判断该单有没有做返修入库单,如有,则将该信息标记为11
|
|
|
+// PaoSetRemote icstockbillmachinecode = P2Server.getP2Server()
|
|
|
+// .getPaoSet("icstockbillmachinecode",
|
|
|
+// icstockbillSet.getUserInfo());
|
|
|
+// icstockbillmachinecode.setWhere("FMACHINECODE='" + FMACHINECODE
|
|
|
+// + "'");
|
|
|
+// icstockbillmachinecode.reset();
|
|
|
+// boolean flag = false;
|
|
|
+// int i = 0;
|
|
|
+// PaoRemote icpao1 = null;
|
|
|
+// while ((icpao1 = icstockbillmachinecode.getPao(i)) != null) {
|
|
|
+// if (!icpao1.getPaoSet("ICSTOCKBILL").isEmpty()) {
|
|
|
+// if (icpao1.getPaoSet("ICSTOCKBILL").getPao(0)
|
|
|
+// .getString("ftype").equals("返修入库")
|
|
|
+// || icpao1.getPaoSet("ICSTOCKBILL").getPao(0)
|
|
|
+// .getString("ftype").equals("销售出库")) {
|
|
|
+// flag = true;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// i++;
|
|
|
+// }
|
|
|
+// if (flag) {
|
|
|
+// String SQL = "update TInDetailInt set status=11,ModifyDate=GETDATE() where DetailID="
|
|
|
+// + DetailID + " ";
|
|
|
+// pstmt2 = connection.prepareStatement(SQL);
|
|
|
+// pstmt2.executeUpdate();
|
|
|
+// pstmt2.close();
|
|
|
+// pstmt2 = null;
|
|
|
+// System.err.println("序列号" + FMACHINECODE
|
|
|
+// + "将中间表入库状态更新为11,DetailID" + DetailID);
|
|
|
+// }
|
|
|
+// if (!tmachinecode.getPao(0).getString("fstockno").equals("")
|
|
|
+// || flag) {
|
|
|
+// if (!tmachinecode.getPao(0).getString("fstockno")
|
|
|
+// .equals("")) {
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "所在仓库不为空");
|
|
|
+// }
|
|
|
+// ttiem.close();
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+//
|
|
|
+// {
|
|
|
+// String instockno = ttiem.getPao(0).getString("fstockno");// 默认入库仓库
|
|
|
+// if (instockno.equals("")) {
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "货品档案默认仓库为空");
|
|
|
+// ttiem.close();
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+//
|
|
|
+// String fmono = tmachinecode.getPao(0).getString("fmono");// 生产订单号
|
|
|
+// String fstockno = tmachinecode.getPao(0).getString(
|
|
|
+// "fstockno");// 目前所在仓库
|
|
|
+// String fbillnum = "";
|
|
|
+// PaoSetRemote icmcode = tmachinecode.getPao(0).getPaoSet(
|
|
|
+// "ICSTOCKBILLMACHINECODE");// 出入库机器码表
|
|
|
+// if (!fmono.equals("") && fstockno.equals("")
|
|
|
+// && icmcode.count() == 0) {
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "生成生产入库单");
|
|
|
+// // 当生产订单号不为空,仓库为空且没有出入库记录时,生成产品入库单
|
|
|
+// PaoSetRemote tmodetail = P2Server.getP2Server()
|
|
|
+// .getPaoSet("tmodetail",
|
|
|
+// icstockbillSet.getUserInfo());
|
|
|
+// tmodetail.setWhere("fmono='" + fmono
|
|
|
+// + "' and fitemno='" + FITEMNO
|
|
|
+// + "' and FQTY > isnull(FCOMPLETEQTY,0) ");
|
|
|
+// tmodetail.setOrderBy("FCOMPLETEQTY DESC");
|
|
|
+// tmodetail.reset();
|
|
|
+// if (tmodetail.count() == 0) {// 如不存在对应的生产订单信息,则跳过
|
|
|
+// ttiem.close();
|
|
|
+// System.err.println("序列号" + FMACHINECODE
|
|
|
+// + "找不到对应的生产订单" + fmono);
|
|
|
+// continue;
|
|
|
+// } else {
|
|
|
+// tmodetail.getPao(0).select();
|
|
|
+// tmodetail.getPao(0).setValue("FADDQTY", 1);
|
|
|
+// }
|
|
|
+//
|
|
|
+// icstockbillSet.setApp("STOCKBILL5");
|
|
|
+// icstockbill pao = (icstockbill) icstockbillSet
|
|
|
+// .addAtEnd();
|
|
|
+// pao.setValue("fdepno",
|
|
|
+// tmodetail.getPao(0).getPaoSet("TMO").getPao(0)
|
|
|
+// .getString("fdepno"));
|
|
|
+// pao.setValue("description", "fromwms");
|
|
|
+// pao.setValue("fnotes", "谈桥立仓入库生成");
|
|
|
+// pao.addRowsFromModetail(tmodetail);
|
|
|
+// PaoSetRemote icstockbilldetail = pao
|
|
|
+// .getPaoSet("ICSTOCKBILLDETAIL");
|
|
|
+// icstockbilldetail.getPao(0).setValue("fstockno",
|
|
|
+// instockno);// 指定入库仓库为立体仓库编号
|
|
|
+// PaoSetRemote ICSTOCKBILLMACHINECODE = pao
|
|
|
+// .getPaoSet("ICSTOCKBILLMACHINECODE");
|
|
|
+// PaoRemote mm = ICSTOCKBILLMACHINECODE.addAtEnd();// 为产品入库单增加序列号
|
|
|
+// mm.setValue("FMACHINECODE", FMACHINECODE, 11l);
|
|
|
+// mm.setValue("FITEMNO", FITEMNO, 11l);
|
|
|
+// mm.setValue("FSTOCKNO", instockno, 11l);// 立体仓库编号
|
|
|
+// pao.check(true);// 产品入库单审核
|
|
|
+// fbillnum = pao.getString("fbillnum");
|
|
|
+// } else if (fstockno.equals("")) {
|
|
|
+// // 此处还需判断是否是调拨入库
|
|
|
+// int DBSTOCKBILLID = tmachinecode.getPao(0).getInt(
|
|
|
+// "DBSTOCKBILLID");// 调拨单ID
|
|
|
+// int DBSTOCKBILLDETAIID = tmachinecode.getPao(0).getInt(
|
|
|
+// "DBSTOCKBILLDETAIID");// 调拨单行ID
|
|
|
+//
|
|
|
+// icstockbillSet.setApp("STOCKBILL2");// 其他入库单
|
|
|
+// icstockbill pao = (icstockbill) icstockbillSet
|
|
|
+// .addAtEnd();
|
|
|
+// pao.setValue("fstockno", instockno);
|
|
|
+// pao.setValue("fnotes", "谈桥立仓入库生成");
|
|
|
+// pao.setValue("description", "fromwms");
|
|
|
+// fbillnum = pao.getString("fbillnum");
|
|
|
+// if (DBSTOCKBILLID > 0) {// 如该序列号处于调拨出库状态,则该入库单为调拨入库单
|
|
|
+// pao.setValue("fsourceobject", "DBSTOCKBILL");
|
|
|
+// pao.setValue("fsourceid", DBSTOCKBILLID);
|
|
|
+// pao.setValue("FTYPEMX", "调拨入库", 11l);
|
|
|
+//
|
|
|
+// PaoSetRemote DBSTOCKBILL = pao
|
|
|
+// .getPaoSet("DBSTOCKBILL");
|
|
|
+// if (!DBSTOCKBILL.isEmpty()) {
|
|
|
+// Date fdate = DBSTOCKBILL.getPao(0).getDate(
|
|
|
+// "fdate");// 调拨单单据日期
|
|
|
+// if (!pao.periodIsClose(pao.getPeriod(fdate))) {
|
|
|
+// pao.setValue("fdate", fdate, 2l);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "生成调拨入库单"
|
|
|
+// + fbillnum);
|
|
|
+// } else {
|
|
|
+// pao.setValue("FTYPEMX", "立体仓库入库", 11l);
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "生成其他入库单"
|
|
|
+// + fbillnum);
|
|
|
+// }
|
|
|
+// PaoSetRemote icpao = pao.getPaoSet("icstockbilldetail");
|
|
|
+// PaoRemote newpao = icpao.addAtEnd();
|
|
|
+// newpao.setValue("fitemno", FITEMNO);
|
|
|
+// newpao.setValue("fstockno", instockno);
|
|
|
+// newpao.setValue("fqty", 1);
|
|
|
+// if (DBSTOCKBILLID > 0) {// 如该序列号处于调拨出库状态,则该入库单为调拨入库单
|
|
|
+// newpao.setValue("fsourceobject",
|
|
|
+// "DBSTOCKBILLDETAIL");
|
|
|
+// newpao.setValue("fsourceid", DBSTOCKBILLDETAIID);
|
|
|
+// }
|
|
|
+// PaoSetRemote ICSTOCKBILLMACHINECODE = pao
|
|
|
+// .getPaoSet("ICSTOCKBILLMACHINECODE");
|
|
|
+// PaoRemote mm = ICSTOCKBILLMACHINECODE.addAtEnd();
|
|
|
+// mm.setValue("FMACHINECODE", FMACHINECODE, 11L);
|
|
|
+// mm.setValue("FITEMNO", FITEMNO, 11l);
|
|
|
+// mm.setValue("FSTOCKNO", instockno);// 立体仓库编号
|
|
|
+// pao.check(true);
|
|
|
+//
|
|
|
+// }
|
|
|
+// icstockbillSet.save();
|
|
|
+// if (!fbillnum.equals("")) {
|
|
|
+// System.err.println("序列号" + FMACHINECODE + "中间表状态更新为1");
|
|
|
+// String SQL = "update TInDetailInt set status=1 where DetailID="
|
|
|
+// + DetailID + " ";
|
|
|
+// SQL = SQL
|
|
|
+// + "insert into TInDetailLog(SerialNo,CreateDate,IsDeleted,MaterialCode,BillNo,BillType)";
|
|
|
+// SQL = SQL + " select ";
|
|
|
+// SQL = SQL + "'" + FMACHINECODE + "',";
|
|
|
+// SQL = SQL + "GETDATE(),";
|
|
|
+// SQL = SQL + "0,";
|
|
|
+// SQL = SQL + "'" + FITEMNO + "',";
|
|
|
+// SQL = SQL + "'" + fbillnum + "',";
|
|
|
+// SQL = SQL + "1";
|
|
|
+// pstmt2 = connection.prepareStatement(SQL);
|
|
|
+// pstmt2.executeUpdate();
|
|
|
+// pstmt2.close();
|
|
|
+// pstmt2 = null;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// ttiem.close();
|
|
|
+// }
|
|
|
+// icstockbillSet.close();
|
|
|
+// result.close();
|
|
|
+// result = null;
|
|
|
+// pstmt.close();
|
|
|
+// pstmt = null;
|
|
|
+// connection.close();
|
|
|
+// connection = null;
|
|
|
+// } catch (Exception e) {
|
|
|
+// System.err.println("downloadStockbill:" + e.getMessage());
|
|
|
+// } finally {
|
|
|
+// try {
|
|
|
+// if (result != null) {
|
|
|
+// result.close();
|
|
|
+// result = null;
|
|
|
+// }
|
|
|
+// } catch (SQLException e1) {
|
|
|
+// e1.printStackTrace();
|
|
|
+// }
|
|
|
+// try {
|
|
|
+// if (pstmt != null) {
|
|
|
+// pstmt.close();
|
|
|
+// pstmt = null;
|
|
|
+// }
|
|
|
+// } catch (SQLException e1) {
|
|
|
+// e1.printStackTrace();
|
|
|
+// }
|
|
|
+// try {
|
|
|
+// if (pstmt2 != null) {
|
|
|
+// pstmt2.close();
|
|
|
+// pstmt2 = null;
|
|
|
+// }
|
|
|
+// } catch (SQLException e1) {
|
|
|
+// e1.printStackTrace();
|
|
|
+// }
|
|
|
+// try {
|
|
|
+// if (connection != null) {
|
|
|
+// connection.close();
|
|
|
+// connection = null;
|
|
|
+// }
|
|
|
+// } catch (SQLException e1) {
|
|
|
+// e1.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// SQL = null;
|
|
|
+// }
|
|
|
+}
|