📄 salesidoc.java
字号:
/**
* <p>Title: IDOC Interface</p>
* <p>Description: IDOC 转换器</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: SiChuan XinHua</p>
* @author zjc
* @version 1.0
*/
/**
* 上传销售数据解析类
*/
package com.idoc.logic;
import com.idoc.face.InterfaceIDOC;
import java.sql.Connection;
import java.util.Vector;
import java.util.Hashtable;
import java.util.Enumeration;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.ResultSet;
import com.idoc.util.db.DBQueryBean;
import com.idoc.util.db.RowSet;
import com.idoc.util.db.Row;
import com.idoc.util.Operate;
import com.idoc.file.WriteData;
import com.idoc.util.db.BeanConn;
import com.idoc.util.LogManager;
import com.idoc.util.GetProperty;
public class SalesIDOC
implements InterfaceIDOC {
Runtime runtime = null;
private UpDataDispose UpDataDispase1 = new UpDataDispose();
private WriteData writeSAP = new WriteData();;
private LogManager log = new LogManager();
private GetProperty getPro = new GetProperty();
private Connection conn = null; //sqlgetconn中的数据库连接
private Vector Tv = new Vector(); //每个元素容纳解析拼装的一个段
private Vector Tvserialno = new Vector(); //保存处理后的单号,以便删除SAPOUT_D_SALE_Payment数据时只删除对应单号的数据
private Hashtable ht = new Hashtable(); //key是门店,value配置表中本门店最大结束时间戳
private ResultSet rowSet1 = null; //存放中间表数据
private Statement stmt1 = null; //取中间表数据用
private String maxtime = ""; //中间表的最大时间戳
private String time = ""; //配置表中某门店的上次最大结束时间戳
private String endtimebak = ""; //保存本次循环取到的结束时间戳
private int num = 0; //产生idoc文件名的名称记数器
private int rowCount = 0; // 生成IDOC文件大小的记录条数
private String store = ""; // 门店号
private String[][] str = null;
Operate Operate1 = new Operate();
public Connection sqlgetconn() {
try {
conn = new BeanConn().getConn();
}
catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public boolean buildIDOC() {
rowCount = getPro.getRowCount();
String EDI_DC40 = ""; //段名
String E2WPB01001 = ""; //段名
String E2WPB02001 = ""; //段名
String E2WXX01 = ""; //段名
String E2WPB03002 = ""; //段名
String E2WPB06002 = ""; //段名
String rSerialNop = ""; //保存上次销售单号
//String LIST_NOp = ""; //保存上次序号
String rSTORECODE = ""; //门店号
String rSerialNo = ""; //销售单号
String LIST_NO = ""; //序号
String rInsider_Card = ""; //会员卡号
String Merch_CODE = ""; //商品编码
String Sell_TYPE = ""; //销售类型
String Sell_Amount = ""; //销售数量
String Courtesy_Cate = ""; //优惠卷流水号
String CONDITION = ""; //条件符号
String CONDITIONTYPE = ""; //条件类型
String Sell_Money = ""; //销售金额
String Discount_Type = ""; //没用
String Discount_Rate = ""; //没用
String Shroff_Code = ""; //收银员ID
String Shroff_Name = ""; //收银员名称
String Sell_Time = ""; //销售时间
String startime = ""; ////销售时间的日期段
String endtime = ""; ////销售时间的时间段
String Promotionor = ""; //促销员
String Promotion_CODE = ""; //促销编码
String MONEYCODE = ""; //货币代码
String BONNUMMER = ""; //POS单号(4位)+日期(6位)+序号(4位)
String sap_port = getPro.getSapPort().toString(); //sap端口号
String type = ""; //支付方式
String money1 = ""; //金额
String bank = ""; //银行卡号
int i = 0; // 实际循环的记录条数
if (rowSet1 == null) {
return false;
}
try {
while (rowSet1.next()) {
rSTORECODE = rowSet1.getString("STORECODE").trim(); //门店号
rSerialNo = rowSet1.getString("SerialNo").trim(); //销售单号,E2WPB01001
BONNUMMER = Operate1.substring(rSerialNo, 4, 8) +
Operate1.substring(rSerialNo, 10);
LIST_NO = rowSet1.getString("LIST_NO").trim(); //序号,E2WPB02001
rInsider_Card = rowSet1.getString("Insider_Card"); //会员卡号,E2WPB01001
Merch_CODE = rowSet1.getString("Merch_CODE").trim(); //商品编码,E2WPB02001
Sell_TYPE = rowSet1.getString("Sell_TYPE").trim(); //销售类型,E2WPB02001
if (Sell_TYPE == null) {
Sell_TYPE = "";
}
Sell_Amount = rowSet1.getString("Sell_Amount"); //销售数量,E2WPB02001
Courtesy_Cate = rowSet1.getString("Courtesy_Cate"); //优惠卷流水号,E2WXX01
CONDITION = rowSet1.getString("CONDITION").trim(); ////条件符号,E2WPB03002
if (CONDITION == null) {
CONDITION = "";
}
Sell_Money = rowSet1.getString("Sell_Money").trim(); //销售金额,E2WPB03002
Discount_Type = rowSet1.getString("Discount_Type"); //折扣类型,E2WPB03002
Discount_Rate = rowSet1.getString("Discount_Rate"); //折扣率,E2WPB03002
Shroff_Code = rowSet1.getString("Shroff_Code"); //收银员ID,E2WPB01001
Shroff_Name = rowSet1.getString("Shroff_Name"); //收银员名称,E2WPB01001
Sell_Time = rowSet1.getString("Sell_Time"); //销售时间,E2WPB01001,sap中日期时间分开
startime = Operate1.substring(Sell_Time, 0, 4) +
Operate1.substring(Sell_Time, 5, 7)
+ Operate1.substring(Sell_Time, 8, 10);
endtime = Operate1.substring(Sell_Time, 11, 13) +
Operate1.substring(Sell_Time, 14, 16)
+ Operate1.substring(Sell_Time, 17, 19);
Promotionor = rowSet1.getString("Promotionor"); //促销员,E2WPB02001
Promotion_CODE = rowSet1.getString("Promotion_CODE"); //促销编码,E2WPB02001
MONEYCODE = rowSet1.getString("MONEYCODE").trim(); //货币代码,E2WPB01001001
type = rowSet1.getString("type");
money1 = rowSet1.getString("money1");
bank = rowSet1.getString("bank");
//PN10表示正常销售,ZP10表示有打折
//PN10时Sell_TYPE与CONDITIONTYPE相反
//ZP10时Sell_TYPE与CONDITIONTYPE相同
//ZP10时Sell_Money加付号
if (CONDITION.equalsIgnoreCase("PN10")) {
if (Sell_TYPE.equalsIgnoreCase("-")) {
CONDITIONTYPE = "";
}
else {
CONDITIONTYPE = "-";
}
}
if (CONDITION.equalsIgnoreCase("ZP10")) {
Sell_Money = "-" + Sell_Money;
if (Sell_TYPE.equalsIgnoreCase("-")) {
CONDITIONTYPE = "-";
}
else {
CONDITIONTYPE = "";
}
}
if (!rSerialNop.equalsIgnoreCase(rSerialNo)) {
//保存处理的单号,以便删除SAPOUT_D_SALE_Payment数据时只删除对应单号的数据
Tvserialno.addElement(rSerialNo);
//当处理行大于rowCount时写idoc,清空vector,i置0,以便生成新的idoc
if (i >= rowCount) {
if (!writeidoc("idoc")) {
Tv.removeAllElements();
return false;
}
Tv.removeAllElements();
i = 0;
}
if (i == 0) {
EDI_DC40 = Operate1.addEmpty("EDI_DC40", 10) +
Operate1.addEmpty("", 23) + "68"
+ "2" + " " + Operate1.addEmpty("WPUBON01", 30) +
Operate1.addEmpty("", 30)
+ Operate1.addEmpty("WPUBON", 30)
+ Operate1.addEmpty("", 13) + "WPUBON" +
Operate1.addEmpty("WPUX", 10) +
"KU" + " "
+ Operate1.addEmpty("000000" + rSTORECODE, 10) +
Operate1.addEmpty("", 91) +
Operate1.addEmpty(sap_port, 10)
+ "KU" + " " + Operate1.addEmpty("000000" + rSTORECODE, 10) +
" "
+
" ";
Tv.addElement(EDI_DC40);
}
E2WPB01001 = Operate1.addEmpty("E2WPB01001", 63) +
Operate1.addEmpty("", 5) + Operate1.addEmpty(rInsider_Card, 25)
+ Operate1.addEmpty(startime, 8) + Operate1.addEmpty(endtime, 6) +
Operate1.addEmpty(BONNUMMER, 15) +
Operate1.addEmpty("", 29) + Operate1.addEmpty(Shroff_Code, 10)
+ Operate1.addEmpty(Shroff_Name, 35) +
Operate1.addEmpty(MONEYCODE, 4);
Tv.addElement(E2WPB01001);
if (Sell_TYPE.equalsIgnoreCase("+")) {
Sell_TYPE = "";
}
E2WPB02001 = Operate1.addEmpty("E2WPB02001", 63) +
Operate1.addEmpty("", 4) + "ARTN" +
Operate1.addEmpty(Merch_CODE, 25)
+ Operate1.addEmpty("", 25) + Operate1.addEmpty(Sell_TYPE, 1) +
Operate1.addEmpty(Sell_Amount, 10) +
Operate1.addEmpty(Promotionor, 10)
+ Operate1.addEmpty(Promotion_CODE, 15) +
Operate1.addEmpty(LIST_NO, 15);
Tv.addElement(E2WPB02001);
E2WPB03002 = Operate1.addEmpty("E2WPB03002", 63) +
Operate1.addEmpty(CONDITIONTYPE, 1)
+ Operate1.addEmpty(CONDITION, 4) +
Operate1.addEmpty(Sell_Money, 20)
+ Operate1.addEmpty("", 89);
Tv.addElement(E2WPB03002);
E2WXX01 = Operate1.addEmpty("E2WXX01", 63) + Operate1.addEmpty("", 15) +
Operate1.addEmpty(Courtesy_Cate, 40);
Tv.addElement(E2WXX01);
rSerialNop = rSerialNo;
}
else {
// 单号相同的
if ( (rSerialNop.equalsIgnoreCase(rSerialNo))) {
if (type.trim().equalsIgnoreCase("")) {
E2WPB02001 = Operate1.addEmpty("E2WPB02001", 63) +
Operate1.addEmpty("", 4) + "ARTN" +
Operate1.addEmpty(Merch_CODE, 25)
+ Operate1.addEmpty("", 25) + Operate1.addEmpty(Sell_TYPE, 1) +
Operate1.addEmpty(Sell_Amount, 10) +
Operate1.addEmpty(Promotionor, 10)
+ Operate1.addEmpty(Promotion_CODE, 15) +
Operate1.addEmpty(LIST_NO, 15);
Tv.addElement(E2WPB02001);
E2WPB03002 = Operate1.addEmpty("E2WPB03002", 63) +
Operate1.addEmpty(CONDITIONTYPE, 1)
+ Operate1.addEmpty(CONDITION, 4) +
Operate1.addEmpty(Sell_Money, 20)
+ Operate1.addEmpty("", 89);
Tv.addElement(E2WPB03002);
E2WXX01 = Operate1.addEmpty("E2WXX01", 63) +
Operate1.addEmpty("", 15) +
Operate1.addEmpty(Courtesy_Cate, 40);
Tv.addElement(E2WXX01);
}
else {
E2WPB06002 = Operate1.addEmpty("E2WPB06002", 63) + " "
+ Operate1.addEmpty(type, 4) +
Operate1.addEmpty(money1, 35)
+ Operate1.addEmpty("", 8) +
Operate1.addEmpty(bank, 25)
+ Operate1.addEmpty("", 319);
Tv.addElement(E2WPB06002);
}
}
}
i++;
}
if (!writeidoc("trigger")) {
Tv.removeAllElements();
return false;
}
Tv.removeAllElements();
}
catch (Exception e) {
System.out.println("SalesIDOC's buildIDOC!");
e.printStackTrace();
return false;
}
return true;
}
//处理正常情况,处理所有门店的配置表中最大结束时间戳到中间表的最大时间戳的数据
public void disposeIDOC() {
try {
conn = sqlgetconn();
//System.out.println("sales not pool conn---------------"+conn.toString());
if (conn == null) {
//javax.swing.JOptionPane.showMessageDialog(null, "创建连接失败:", "conn等于null",
// 0, null);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -