package com.topsun.posclient.system.dao;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLConnection;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Text;
import com.topsun.posclient.common.AppConstants;
import com.topsun.posclient.common.LoggerUtil;
import com.topsun.posclient.common.POSClientApp;
import com.topsun.posclient.common.ProjectUtil;
import com.topsun.posclient.common.dao.BaseDao;
import com.topsun.posclient.datamodel.CashierModel;
import com.topsun.posclient.datamodel.Item;
import com.topsun.posclient.datamodel.ItemIndex;
import com.topsun.posclient.datamodel.Material;
import com.topsun.posclient.datamodel.PromotionA;
import com.topsun.posclient.datamodel.PromotionM;
import com.topsun.posclient.datamodel.PromotionS;
import com.topsun.posclient.datamodel.Shop;
import com.topsun.posclient.datamodel.dto.CardRuleDTO;
import com.topsun.posclient.datamodel.dto.CashierModeDTO;
import com.topsun.posclient.datamodel.dto.GoldPriceDTO;
import com.topsun.posclient.datamodel.dto.InvoiceDTO;
import com.topsun.posclient.datamodel.dto.ItemDTO;
import com.topsun.posclient.datamodel.dto.ItemIndexDTO;
import com.topsun.posclient.datamodel.dto.MaterialDTO;
import com.topsun.posclient.datamodel.dto.MemberDTO;
import com.topsun.posclient.datamodel.dto.PointDataDTO;
import com.topsun.posclient.datamodel.dto.PromotionDTO;
import com.topsun.posclient.datamodel.dto.RetailDTO;
import com.topsun.posclient.datamodel.dto.ShopDTO;
import com.topsun.posclient.datamodel.dto.UserDTO;
import com.topsun.posclient.system.MessageResources;
import com.topsun.posclient.system.SyncProgress;
import com.topsun.posclient.system.SystemActivator;
import com.topsun.posclient.system.service.SyncDataListenerManager;
import com.topsun.posclient.webservice.POSServerCaller;
import com.topsun.posclient.webservice.dto.ArrayOfCashierMode;
import com.topsun.posclient.webservice.dto.ArrayOfInvoice;
import com.topsun.posclient.webservice.dto.ArrayOfRetail;
import com.topsun.posclient.webservice.dto.ArrayOfauth;
import com.topsun.posclient.webservice.dto.ArrayOfdprule_m;
import com.topsun.posclient.webservice.dto.ArrayOfgoldPrice;
import com.topsun.posclient.webservice.dto.ArrayOfmItem;
import com.topsun.posclient.webservice.dto.ArrayOfmember;
import com.topsun.posclient.webservice.dto.ArrayOfpoint;
import com.topsun.posclient.webservice.dto.ArrayOfpromotion;
import com.topsun.posclient.webservice.dto.ArrayOfpromotion_a;
import com.topsun.posclient.webservice.dto.ArrayOfpromotion_m;
import com.topsun.posclient.webservice.dto.ArrayOfpromotion_s;
import com.topsun.posclient.webservice.dto.ArrayOfsyncMaterialDataResultItem;
import com.topsun.posclient.webservice.dto.ArrayOfsyncShopDataResultItem;
import com.topsun.posclient.webservice.dto.ArrayOftemplate;
import com.topsun.posclient.webservice.dto.ArrayOfuser;
import com.topsun.posclient.webservice.dto.Auth;
import com.topsun.posclient.webservice.dto.CashierMode;
import com.topsun.posclient.webservice.dto.GetAllCashierMode;
import com.topsun.posclient.webservice.dto.GetAllCashierModeReq;
import com.topsun.posclient.webservice.dto.GetAllCashierModeResponse;
import com.topsun.posclient.webservice.dto.GetAllCashierModeResult;
import com.topsun.posclient.webservice.dto.GetCardRuleData;
import com.topsun.posclient.webservice.dto.GetCardRuleDataReq;
import com.topsun.posclient.webservice.dto.GetCardRuleDataResponse;
import com.topsun.posclient.webservice.dto.GetCardRuleDataResult;
import com.topsun.posclient.webservice.dto.GetGoldPriceData;
import com.topsun.posclient.webservice.dto.GetGoldPriceDataReq;
import com.topsun.posclient.webservice.dto.GetGoldPriceDataReqCondition;
import com.topsun.posclient.webservice.dto.GetGoldPriceDataResponse;
import com.topsun.posclient.webservice.dto.GetGoldPriceDataResult;
import com.topsun.posclient.webservice.dto.GetInvoice;
import com.topsun.posclient.webservice.dto.GetInvoiceReq;
import com.topsun.posclient.webservice.dto.GetInvoiceReqCondition;
import com.topsun.posclient.webservice.dto.GetInvoiceResponse;
import com.topsun.posclient.webservice.dto.GetInvoiceResult;
import com.topsun.posclient.webservice.dto.GetMemberData;
import com.topsun.posclient.webservice.dto.GetMemberDataReq;
import com.topsun.posclient.webservice.dto.GetMemberDataResponse;
import com.topsun.posclient.webservice.dto.GetMemberDataResult;
import com.topsun.posclient.webservice.dto.GetPointData;
import com.topsun.posclient.webservice.dto.GetPointDataReq;
import com.topsun.posclient.webservice.dto.GetPointDataReqCondition;
import com.topsun.posclient.webservice.dto.GetPointDataResponse;
import com.topsun.posclient.webservice.dto.GetPointDataResult;
import com.topsun.posclient.webservice.dto.GetPrintTemplate;
import com.topsun.posclient.webservice.dto.GetPrintTemplateReq;
import com.topsun.posclient.webservice.dto.GetPrintTemplateReqCondition;
import com.topsun.posclient.webservice.dto.GetPrintTemplateResponse;
import com.topsun.posclient.webservice.dto.GetPrintTemplateResult;
import com.topsun.posclient.webservice.dto.GetPromotionData;
import com.topsun.posclient.webservice.dto.GetPromotionDataReq;
import com.topsun.posclient.webservice.dto.GetPromotionDataReqCondition;
import com.topsun.posclient.webservice.dto.GetPromotionDataResponse;
import com.topsun.posclient.webservice.dto.GetPromotionDataResult;
import com.topsun.posclient.webservice.dto.GetUserInfo;
import com.topsun.posclient.webservice.dto.GetUserInfoReq;
import com.topsun.posclient.webservice.dto.GetUserInfoResponse;
import com.topsun.posclient.webservice.dto.GetUserInfoResult;
import com.topsun.posclient.webservice.dto.GoldPrice;
import com.topsun.posclient.webservice.dto.MItem;
import com.topsun.posclient.webservice.dto.Promotion;
import com.topsun.posclient.webservice.dto.Promotion_a;
import com.topsun.posclient.webservice.dto.Promotion_m;
import com.topsun.posclient.webservice.dto.Promotion_s;
import com.topsun.posclient.webservice.dto.QueryItemData;
import com.topsun.posclient.webservice.dto.QueryItemDataReq;
import com.topsun.posclient.webservice.dto.QueryItemDataReqCondition;
import com.topsun.posclient.webservice.dto.QueryItemDataResponse;
import com.topsun.posclient.webservice.dto.QueryItemDataResult;
import com.topsun.posclient.webservice.dto.Retail;
import com.topsun.posclient.webservice.dto.SavePartSales;
import com.topsun.posclient.webservice.dto.SavePartSalesReq;
import com.topsun.posclient.webservice.dto.SavePartSalesResponse;
import com.topsun.posclient.webservice.dto.SyncMaterialData;
import com.topsun.posclient.webservice.dto.SyncMaterialDataReq;
import com.topsun.posclient.webservice.dto.SyncMaterialDataResponse;
import com.topsun.posclient.webservice.dto.SyncMaterialDataResult;
import com.topsun.posclient.webservice.dto.SyncMaterialDataResultItem;
import com.topsun.posclient.webservice.dto.SyncShopData;
import com.topsun.posclient.webservice.dto.SyncShopDataReq;
import com.topsun.posclient.webservice.dto.SyncShopDataResponse;
import com.topsun.posclient.webservice.dto.SyncShopDataResult;
import com.topsun.posclient.webservice.dto.SyncShopDataResultItem;
import com.topsun.posclient.webservice.dto.Template;
import com.topsun.posclient.webservice.dto.User;
/**
* 数据同步处理
*
* @author Lilei
*
*/
public class SyncDataDao extends BaseDao {
/**
* 下载用户数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadUserData(final SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
SyncDataListenerManager.getInstance().fireChange( "---------------> " + MessageResources.message_tips_startsyncuser);
try {
GetUserInfoReq req = new GetUserInfoReq();
req.setUserCode(null);//userCode设置为null,同步改部门下所有用户
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
req.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
GetUserInfo getUserInfo = new GetUserInfo();
getUserInfo.setGetUserInfoReq(req);
GetUserInfoResponse response = POSServerCaller.getWebService(30000L).getUserInfo(getUserInfo);
GetUserInfoResult result = response.getGetUserInfoResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_USER_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_USER_FILENAME_BACK);
return;
}
ArrayOfuser userArray = result.getUsers();
if (null == userArray) {
// 没有用户数据,删除旧的用户数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_USER_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_USER_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有用户数据");
return;
}
User[] users = userArray.getUser();
List<com.topsun.posclient.datamodel.User> userList = new ArrayList<com.topsun.posclient.datamodel.User>();
UserDTO userDTO = new UserDTO();
for (int i = 0; i < users.length; i++) {
User user = users[i];
com.topsun.posclient.datamodel.User uu = new com.topsun.posclient.datamodel.User();
uu.setUserCode(user.getUserCode());
uu.setDeptId(user.getDeptId());
uu.setDeptName(user.getDeptName());
uu.setEmployeeId(user.getEmployeeId());
uu.setEmployeeName(user.getEmployeeName());
uu.setId(user.getUserId());
uu.setUserName(user.getUserName());
uu.setPassWord(user.getPassword());
uu.setHaveChangeAuth(user.getHaveChangeAuth());
com.topsun.posclient.webservice.dto.MAuth mauth = user.getMAuths();
com.topsun.posclient.datamodel.MAuth m = new com.topsun.posclient.datamodel.MAuth();
if(null != mauth){
m.setAuthGroupId(mauth.getAuthGroupID());
m.setIsDauth(mauth.getIsDAuth());
m.setIsMauth(mauth.getIsMAuth());
m.setMlimit(mauth.getMlimit());
m.setMratio(mauth.getMratio());
m.setRate(mauth.getRate());
uu.setMauth(m);
}
ArrayOfauth aoArray = user.getAuths();
if(null != aoArray){
Auth[] authArray = aoArray.getAuth();
List<com.topsun.posclient.datamodel.Auth> authList = new ArrayList<com.topsun.posclient.datamodel.Auth>();
for(int j=0; j<authArray.length; j++){
Auth a = authArray[j];
com.topsun.posclient.datamodel.Auth auth = new com.topsun.posclient.datamodel.Auth();
auth.setAuthGroupId(a.getAuthGroupId());
auth.setAuthGroupName(a.getAuthGroupName());
auth.setFunctionId(a.getFunctionId());
auth.setFunctionName(a.getFunctionName());
auth.setIsAuth(a.getIsAuth());
auth.setOperationId(a.getOperationId());
auth.setOperationName(a.getOperationName());
authList.add(auth);
}
uu.setAuths(authList);
}
userList.add(uu);
}
userDTO.setUserList(userList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(userDTO,
AppConstants.DATA_USER_FILENAME_BACK,
AppConstants.DATA_USER_FILENAME);
} catch (Exception e) {
e.printStackTrace();
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载用户数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载用户数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> " + MessageResources.message_tips_endsyncuser, count);
}
});
}
/**
* 下载店铺数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadShopData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> " + MessageResources.message_tips_startsyncshop);
try {
SyncShopDataReq req = new SyncShopDataReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
SyncShopData syncShopData46 = new SyncShopData();
syncShopData46.setSyncShopDataReq(req);
SyncShopDataResponse response = POSServerCaller.getWebService(60000000L).syncShopData(syncShopData46);
SyncShopDataResult result = response.getSyncShopDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_SHOP_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_SHOP_FILENAME_BACK);
return;
}
ArrayOfsyncShopDataResultItem aosdr = result.getShop();
if (null == aosdr) {
// 没有店铺数据,删除旧的店铺数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_SHOP_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_SHOP_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有店铺数据");
return;
}
SyncShopDataResultItem[] shopItems = aosdr.getSyncShopDataResultItem();
List<com.topsun.posclient.datamodel.Shop> shopList = new ArrayList<com.topsun.posclient.datamodel.Shop>();
ShopDTO shopDTO = new ShopDTO();
for (int i = 0; i < shopItems.length; i++) {
SyncShopDataResultItem shopItem = shopItems[i];
Shop shop = new Shop();
shop.setId(shopItem.getShopID());
shop.setShpCode(shopItem.getShopCode());
shop.setShpName(shopItem.getShopName());
shop.setBrand(shopItem.getBrand());
shop.setCompany(shopItem.getCompany());
if(shopItem.getGffdxishu() == null ){
shop.setGffdxishu(new BigDecimal(1));
}else{
shop.setGffdxishu(shopItem.getGffdxishu());
}
shopList.add(shop);
}
shopDTO.setShopList(shopList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(shopDTO, AppConstants.DATA_SHOP_FILENAME_BACK, AppConstants.DATA_SHOP_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载店铺数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载店铺数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> " + MessageResources.message_tips_endsyncshop, count);
}
});
}
/**
* 下载物料数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadMaterialData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange(
"---------------> 开始下载物料数据");
SyncMaterialDataReq req = new SyncMaterialDataReq();
req.setUserCredential(POSServerCaller
.getDefaultUserCredential());
SyncMaterialData syncMaterialData = new SyncMaterialData();
syncMaterialData.setSyncMaterialDataReq(req);
try {
SyncMaterialDataResponse response = POSServerCaller.getWebService(60000000L).syncMaterialData(syncMaterialData);
SyncMaterialDataResult result = response.getSyncMaterialDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_MATERIAL_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_MATERIAL_FILENAME_BACK);
return;
}
ArrayOfsyncMaterialDataResultItem aomdri = result
.getMaterial();
if (null == aomdri) {
// 没有物料数据,删除旧的物料数据
getLocalProcessor().deleteDataFile(
AppConstants.DATA_MATERIAL_FILENAME);
getLocalProcessor().deleteDataFile(
AppConstants.DATA_MATERIAL_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange(
"没有物料数据");
return;
}
SyncMaterialDataResultItem[] itemArray = aomdri
.getSyncMaterialDataResultItem();
List<Material> materialList = new ArrayList<Material>();
MaterialDTO materialDTO = new MaterialDTO();
for (int i = 0; i < itemArray.length; i++) {
SyncMaterialDataResultItem item = itemArray[i];
Material material = new Material();
material.setId(item.getID());
material.setMatnr(item.getMatnr());
material.setMaktx(item.getMatnrName());
material.setMatkl(item.getMATKL());
materialList.add(material);
}
materialDTO.setMaterialList(materialList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(materialDTO,
AppConstants.DATA_MATERIAL_FILENAME_BACK,
AppConstants.DATA_MATERIAL_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载物料数据失败", e);
SyncDataListenerManager.getInstance()
.fireChange("下载物料数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange(
"---------------> 完成物料数据下载", count);
}
});
}
/**
* 下载促销方案数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadPromotionData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始下载促销方案数据");
GetPromotionDataReqCondition param = new GetPromotionDataReqCondition();
param.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
GetPromotionDataReq req = new GetPromotionDataReq();
req.setCondition(param);
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetPromotionData getPromotionData36 = new GetPromotionData();
getPromotionData36.setGetPromotionDataReq(req);
try {
GetPromotionDataResponse response = POSServerCaller.getWebService(60000000L).getPromotionData(getPromotionData36);
GetPromotionDataResult result = response.getGetPromotionDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_PROMOTE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_PROMOTE_FILENAME_BACK);
return;
}
ArrayOfpromotion arrayPromotion = result.getPromotions();
if (null == arrayPromotion) {
// 没有促销方案数据,删除旧的促销方案数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_PROMOTE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_PROMOTE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有促销方案数据");
return;
}
Promotion[] promotionAray = arrayPromotion.getPromotion();
PromotionDTO promotionDTO = new PromotionDTO();
List<com.topsun.posclient.datamodel.Promotion> promiList = new ArrayList<com.topsun.posclient.datamodel.Promotion>();
for (int i = 0; i < promotionAray.length; i++) {
Promotion p = promotionAray[i];
com.topsun.posclient.datamodel.Promotion promi = new com.topsun.posclient.datamodel.Promotion();
promi.setID(p.getId());
promi.setDocNum(p.getDocNum());
promi.setEndDate(ProjectUtil.getDate(p.getEndDate()));
promi.setEndTime(p.getEndTime());
promi.setFri(p.getFridayFlg());
promi.setIsAll(p.getIsAll());
promi.setLevel(p.getLevel());
promi.setMon(p.getMondayFlg());
promi.setRate(p.getRate());
promi.setSat(p.getSaturdayFlg());
promi.setStartDate(ProjectUtil.getDate(p.getStartDate()));
promi.setStartTime(p.getStartTime());
promi.setSun(p.getSundayFlg());
promi.setThu(p.getTuesdayFlg());
promi.setTitle(p.getTitle());
promi.setTur(p.getThursdayFlg());
promi.setType(p.getTypeID());
promi.setWen(p.getWednesdayFlg());
List<PromotionA> pas = new ArrayList<PromotionA>();
List<PromotionM> pms = new ArrayList<PromotionM>();
List<PromotionS> pss = new ArrayList<PromotionS>();
ArrayOfpromotion_a aopa = p.getPromotion_as();
if (null != aopa) {
Promotion_a[] paArray = aopa.getPromotion_a();
for (int x = 0; x < paArray.length; x++) {
Promotion_a pa = paArray[x];
PromotionA promiA = new PromotionA();
promiA.setDocNum(p.getDocNum());
promiA.setSet1(pa.getSet1());
promiA.setSet2(pa.getSet2());
pas.add(promiA);
}
}
ArrayOfpromotion_m aopm = p.getPromotion_ms();
if (null != aopm) {
Promotion_m[] pmArray = aopm.getPromotion_m();
for (int x = 0; x < pmArray.length; x++) {
Promotion_m pm = pmArray[x];
PromotionM promiM = new PromotionM();
promiM.setDocNum(p.getDocNum());
promiM.setMATNR(pm.getMATNR());
promiM.setRate(pm.getRate());
promiM.setType(String.valueOf(pm.getType()));
promiM.setSum(pm.getSum());
pms.add(promiM);
}
}
ArrayOfpromotion_s aops = p.getPromotion_ss();
if (null != aops) {
Promotion_s[] psArray = aops.getPromotion_s();
for (int x = 0; x < psArray.length; x++) {
Promotion_s ps = psArray[x];
PromotionS promiS = new PromotionS();
promiS.setDocNum(p.getDocNum());
promiS.setGiveaway(ps.getMATNR());
pss.add(promiS);
}
}
promi.setPromotionAList(pas);
promi.setPromotionMList(pms);
promi.setPromotionSList(pss);
promiList.add(promi);
}
promotionDTO.setPromotionList(promiList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(promotionDTO,
AppConstants.DATA_PROMOTE_FILENAME_BACK,
AppConstants.DATA_PROMOTE_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载载促销方案数据失败", e);
SyncDataListenerManager.getInstance().fireChange( "下载载促销方案数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成促销方案数据下载", count);
}
});
}
/**
* 下载单品数据
* @param progress
* @param count
* @throws Exception
*/
public void downloadItemData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> "+ MessageResources.message_tips_startsyncitem);
StringBuffer barCodes = null;
List<Integer> ids = new ArrayList<Integer>();
List<ItemIndex> itemIndexList = new ArrayList<ItemIndex>();
while (true) {
barCodes = new StringBuffer(); // 上次同步ID记录
try {
QueryItemDataReqCondition condition = new QueryItemDataReqCondition();
condition.setFlagIdList(barCodes.toString());
condition.setShpID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
QueryItemDataReq req = new QueryItemDataReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
req.setCondition(condition);
QueryItemData queryItemData38 = new QueryItemData();
queryItemData38.setQueryItemDataReq(req);
QueryItemDataResponse response = POSServerCaller.getWebService(60000000L).queryItemData(queryItemData38);
QueryItemDataResult result = response.getQueryItemDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_PATH);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_PATH_BACK);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_INDEX_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_INDEX_FILENAME_BACK);
return;
}
List<Item> itemList = new ArrayList<Item>();
ItemDTO itemDTO = new ItemDTO();
ArrayOfmItem responseData = result.getMItems();
if (null == responseData) {
// 没有单品数据,删除旧的单品数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_PATH);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_PATH_BACK);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_INDEX_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_ITEM_INDEX_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有商品数据");
return;
}
MItem[] itemArray = responseData.getMItem();
for (int i = 0; i < itemArray.length; i++) {
Item item = new Item();
MItem sd = itemArray[i];
ids.add(sd.getId());
if (i == itemArray.length - 1) {
barCodes.append(sd.getItemCode());
} else {
barCodes.append(sd.getItemCode() + ",");
}
item.setId(sd.getId());
item.setItemCode(sd.getItemCode());
item.setItemName(sd.getItemName());
item.setDISCOUNT1(sd.getDisCount1());
item.setDISCOUNT2(sd.getDisCount2());
item.setMatkl(sd.getMatkl());
item.setMATNR(sd.getMatnr());
item.setZCSBJ(sd.getZcsbj());
item.setZDPZL(sd.getZdpzl());
item.setZDPYZL(sd.getZdpzl());
item.setZFZZZL(sd.getZfzzzl());
item.setZJSHJFS(sd.getZjshjfs());
item.setZMDDXJSJ(sd.getZmddxjsj());
item.setZMDLSBQJ(sd.getZmdlsbqj());
item.setZoneID(sd.getZoneID());
item.setZSJCS(sd.getZsc());
item.setZZZZZ(sd.getZzzzz());
item.setZYTM(sd.getZYTM());
item.setZJGF(sd.getZJGF());
item.setZJSHJFS(sd.getZjshjfs());
item.setZKJGFLS(sd.getZkjgfls()); //克工费
item.setZoneName(sd.getZoneName()); //柜台名
item.setZSFTJ(sd.getZSFTJ());//是否特价
item.setZKJYF(sd.getZKJFY());//扣减费用
itemList.add(item);
}
itemDTO.setItemList(itemList);
ItemIndexDTO oldIndex = (ItemIndexDTO)getLocalProcessor().getObjectFromXml(getLocalProcessor().getDataFileContent(new File(ProjectUtil.getRuntimeClassPath()+AppConstants.DATA_ITEM_INDEX_FILENAME)), ItemIndexDTO.class);
if(null != oldIndex && null != oldIndex.getItemIndexList() && oldIndex.getItemIndexList().size() > 0){
List<ItemIndex> oldIndexs = oldIndex.getItemIndexList();
StringBuffer oldBarCodes = new StringBuffer();
for(int i=0; i<oldIndexs.size(); i++){
oldBarCodes.append(oldIndexs.get(i).getBarCodes());
}
//备份单品数据文件和索引文件
getLocalProcessor().backItemDataAndIndexFile();
}
//创建新的本地单品数据文件
File dataFile = new File(ProjectUtil.getRuntimeClassPath() + getItemDataFileNameWithIndex(barCodes,AppConstants.DATA_ITEM_FILENAME_NONEXT));
FileOutputStream fos = new FileOutputStream(dataFile.getAbsolutePath());
JAXBContext context = JAXBContext.newInstance(itemDTO.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.marshal(itemDTO, fos);
//创建本地索引文件
ItemIndex itemIndex = new ItemIndex();
itemIndex.setFileName(getItemDataFileNameWithIndex(barCodes,AppConstants.DATA_ITEM_FILENAME_NONEXT));
itemIndex.setBarCodes(barCodes.toString());
itemIndexList.add(itemIndex);
if (result.getIsEndFlg()) {
ItemIndexDTO itemIndexDTO = new ItemIndexDTO();
itemIndexDTO.setItemIndexList(itemIndexList);
getLocalProcessor().createXmlFileFromObject(itemIndexDTO, AppConstants.DATA_ITEM_INDEX_FILENAME);
SyncDataListenerManager.getInstance().fireChange("---------------> "+ MessageResources.message_tips_endsyncitem,count);
break;
}
} catch (Exception e) {
e.printStackTrace();
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载商品主数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载商品主数据失败");
return;
}
}
}
});
}
/**
* 取得单品数据文件名称,根据最后数据的ID加一个文件索引
*
* @param idFlagList
* 本地同步的ID集合
* @param name
* 文件名称
* @return
*/
private String getItemDataFileNameWithIndex(StringBuffer idFlagList,
String name) {
String ids = idFlagList.toString();
String[] idArray = ids.split(",");
String lastId = idArray[idArray.length - 1];
return name + "#" + lastId + ".xml";
}
/**
* 下载结算方式数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadCashierModeData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
SyncDataListenerManager
.getInstance()
.fireChange(
"---------------> "
+ MessageResources.message_tips_startsynccashiermode);
try {
GetAllCashierModeReq req = new GetAllCashierModeReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetAllCashierMode getAllCashierMode34 = new GetAllCashierMode();
getAllCashierMode34.setGetAllCashierModeReq(req);
GetAllCashierModeResponse response = POSServerCaller.getWebService(60000000L).getAllCashierMode(getAllCashierMode34);
GetAllCashierModeResult result = response.getGetAllCashierModeResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_CASHIERMODE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_CASHIERMODE_FILENAME_BACK);
return;
}
ArrayOfCashierMode cashModeA = result.getCashierModes();
if (null == cashModeA || null == cashModeA.getCashierMode()) {
// 没有结算方式数据,删除旧的结算方式数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_CASHIERMODE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_CASHIERMODE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有结算方式数据");
return;
}
CashierModeDTO cashierModeDTO = new CashierModeDTO();
List<CashierModel> cashModelList = new ArrayList<CashierModel>();
CashierMode[] cashModeArray = cashModeA.getCashierMode();
for (int i = 0; i < cashModeArray.length; i++) {
CashierMode cm = cashModeArray[i];
CashierModel cashModel = new CashierModel();
cashModel.setID(cm.getID());
cashModel.setIsAccount(cm.getIsAccount());
cashModel.setIsPrint(cm.getIsPrint());
cashModel.setIsNoMakeup(cm.getIsNoMakeup());
cashModel.setRate(cm.getRate());
cashModel.setName(cm.getAccountMethod());
cashModel.setCode(String.valueOf(cm.getPayment()));
cashModelList.add(cashModel);
}
cashierModeDTO.setCashierModeList(cashModelList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(cashierModeDTO,
AppConstants.DATA_CASHIERMODE_FILENAME_BACK,
AppConstants.DATA_CASHIERMODE_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载结算方式数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载结算方式数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange( "---------------> " + MessageResources.message_tips_endsynccashiermode,count);
}
});
}
/**
* 下载实时金价数据
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadGoldPriceData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始同步实时金价数据");
GetGoldPriceDataReqCondition conditions = new GetGoldPriceDataReqCondition();
conditions.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
GetGoldPriceDataReq req = new GetGoldPriceDataReq();
req.setCondition(conditions);
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetGoldPriceData getGoldPriceData70 = new GetGoldPriceData();
getGoldPriceData70.setGetGoldPriceDataReq(req);
try {
GetGoldPriceDataResponse response = POSServerCaller.getWebService(60000000L).getGoldPriceData(getGoldPriceData70);
GetGoldPriceDataResult result = response.getGetGoldPriceDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME_BACK);
return;
}
ArrayOfgoldPrice aop = result.getGoldPrices();
if (null == aop) {
// 没有实时金价数据,删除旧的实时金价数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有实时金价数据");
return;
}
GoldPrice[] gpArray = aop.getGoldPrice();
if (null == gpArray) {
// 没有实时金价数据,删除旧的实时金价数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_GOLDPRICE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有实时金价数据");
return;
}
GoldPriceDTO goldPriceDTO = new GoldPriceDTO();
List<com.topsun.posclient.datamodel.GoldPrice> goldPs = new ArrayList<com.topsun.posclient.datamodel.GoldPrice>();
for (int i = 0; i < gpArray.length; i++) {
GoldPrice gp = gpArray[i];
com.topsun.posclient.datamodel.GoldPrice goldP = new com.topsun.posclient.datamodel.GoldPrice();
goldP.setID(gp.getId());
goldP.setMtartCode(gp.getMaraGrpCode());
goldP.setMtartName(gp.getGrpDescribe());
goldP.setPrice(gp.getPrice());
goldP.setLastSyncTime(ProjectUtil.getCurrentDateByFormat("yyyy-MM-dd hh:mm:ss"));
goldPs.add(goldP);
}
goldPriceDTO.setGoldPriceList(goldPs);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(goldPriceDTO,
AppConstants.DATA_GOLDPRICE_FILENAME_BACK, AppConstants.DATA_GOLDPRICE_FILENAME);
} catch (Exception e) {
e.printStackTrace();
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载实时金价数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载实时金价数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成实时金价数据同步", count);
}
});
}
/**
* 下载打印模板
*
* @param progress
* @param count
* @throws Exception
*/
public void downloadPrintTemplateData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始同步打印模板数据");
GetPrintTemplateReqCondition condition = new GetPrintTemplateReqCondition();
condition.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
GetPrintTemplateReq req = new GetPrintTemplateReq();
req.setCondition(condition);
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetPrintTemplate getPrintTemplate = new GetPrintTemplate();
getPrintTemplate.setGetPrintTemplateReq(req);
try {
GetPrintTemplateResponse response = POSServerCaller.getWebService(60000000L).getPrintTemplate(getPrintTemplate);
GetPrintTemplateResult result = response.getGetPrintTemplateResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
// getLocalProcessor().deleteDataFile(AppConstants.PRINT_TEMP_FILE);
return;
}
ArrayOftemplate aop = result.getTemplates();
if (null == aop) {
// 没有打印模板数据,删除旧的打印模板数据
// getLocalProcessor().deleteDataFile(AppConstants.PRINT_TEMP_FILE);
SyncDataListenerManager.getInstance().fireChange("没有打印模板数据");
return;
}
Template[] gpArray = aop.getTemplate();
if (null == gpArray || gpArray.length == 0) {
// 没有打印模板数据,删除旧的打印模板数据
// getLocalProcessor().deleteDataFile(AppConstants.PRINT_TEMP_FILE);
SyncDataListenerManager.getInstance().fireChange("没有打印模板数据");
return;
}
Template temp0 = gpArray[0];
int bytesum = 0;
int byteread = 0;
URL url = new URL(temp0.getXmlURL());
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs = new FileOutputStream(ProjectUtil.getRuntimeClassPath()+AppConstants.PRINT_TEMP_FILE);
byte[] buffer = new byte[1204];
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
}
fs.flush();
inStream.close();
fs.close();
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载打印模板数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载打印模板数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成打印模板数据同步", count);
}
});
}
/**
* 会员数据下载
* @param progress
* @param count
* @throws Exception
*/
public void downloadMemberData(SyncProgress progress,final int count) throws Exception{
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始下载会员数据");
GetMemberDataReq req = new GetMemberDataReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetMemberData getMemberData66 = new GetMemberData();
getMemberData66.setGetMemberDataReq(req);
try {
GetMemberDataResponse response = POSServerCaller.getWebService(60000000L).getMemberData(getMemberData66);
GetMemberDataResult result = response.getGetMemberDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_MEMBER_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_MEMBER_FILENAME_BACK);
return;
}
ArrayOfmember aom = result.getMembers();
if(null == aom){
// 没有会员数据,删除旧的会员数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_MEMBER_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_MEMBER_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有会员数据");
return;
}
MemberDTO memberDTO = new MemberDTO();
List<com.topsun.posclient.datamodel.Member> memberList = new ArrayList<com.topsun.posclient.datamodel.Member>();
com.topsun.posclient.webservice.dto.Member[] memberArray = aom.getMember();
for(int i=0; i<memberArray.length; i++){
com.topsun.posclient.webservice.dto.Member m = memberArray[i];
com.topsun.posclient.datamodel.Member member = new com.topsun.posclient.datamodel.Member();
member.setID(m.getId());
member.setBirthDay(ProjectUtil.getDate(m.getBirthDay()));
member.setAge(m.getAge());
member.setCardNo(m.getCardNo());
member.setCardType(m.getCardType());
member.setEffectiveDateE(ProjectUtil.getDate(m.getEffectiveDateE()));
member.setEffectiveDateS(ProjectUtil.getDate(m.getEffectiveDateS()));
member.setIDCard(m.getIdCard());
member.setIssueDate(ProjectUtil.getDate(m.getIssueDate()));
member.setMenberName(m.getMemberName());
member.setPoint(m.getPoints());
member.setSex(m.getSex());
member.setStatus(m.getStatus());
memberList.add(member);
}
memberDTO.setMemberList(memberList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(memberDTO, AppConstants.DATA_MEMBER_FILENAME_BACK, AppConstants.DATA_MEMBER_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载会员数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载会员数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成会员数据下载",count);
}
});
}
/**
* 卡类型数据下载
* @param progress
* @param count
* @throws Exception
*/
public void downloadCardRuleData(SyncProgress progress,final int count) throws Exception{
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始下载会员卡类型数据");
GetCardRuleDataReq req = new GetCardRuleDataReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
GetCardRuleData getCardRuleData50 = new GetCardRuleData();
getCardRuleData50.setGetCardRuleDataReq(req);
try {
GetCardRuleDataResponse response = POSServerCaller.getWebService(60000000L).getCardRuleData(getCardRuleData50);
GetCardRuleDataResult result = response.getGetCardRuleDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_CARDRULE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_CARDRULE_FILENAME_BACK);
return;
}
ArrayOfdprule_m aom = result.getDprule_ms();
if(null == aom){
// 没有会员数据,删除旧的会员数据
getLocalProcessor().deleteDataFile(AppConstants.DATA_CARDRULE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_CARDRULE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有会员卡类型数据");
return;
}
CardRuleDTO cardRuleDTO = new CardRuleDTO();
List<com.topsun.posclient.datamodel.CardRule> cardRuleList = new ArrayList<com.topsun.posclient.datamodel.CardRule>();
com.topsun.posclient.webservice.dto.Dprule_m[] dpruleArray = aom.getDprule_m();
for(int i=0; i<dpruleArray.length; i++){
com.topsun.posclient.webservice.dto.Dprule_m m = dpruleArray[i];
com.topsun.posclient.datamodel.CardRule cardRule = new com.topsun.posclient.datamodel.CardRule();
cardRule.setCardTypeNM(m.getCardTypeNM());
cardRule.setDiscount(m.getDiscount());
cardRule.setGrade(m.getGrade());
cardRule.setMatnr(m.getMatnr());
cardRule.setPPointCo(m.getPPointCo());
cardRule.setTotalCo(m.getTotalCo());
cardRuleList.add(cardRule);
}
cardRuleDTO.setCardRuleList(cardRuleList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(cardRuleDTO, AppConstants.DATA_CARDRULE_FILENAME_BACK, AppConstants.DATA_CARDRULE_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载会员卡类型数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载会员卡类型数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成会员卡类型数据下载",count);
}
});
}
/**
* 积分消费数据下载
* @param progress
* @param count
* @throws Exception
*/
public void downloadPointData(SyncProgress progress,final int count) throws Exception{
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始下载积分消费数据");
GetPointDataReqCondition condition = new GetPointDataReqCondition();
condition.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
GetPointDataReq req = new GetPointDataReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
req.setCondition(condition);
GetPointData getPointData56 = new GetPointData();
getPointData56.setGetPointDataReq(req);
// try{
// XMLOutputFactory xof = XMLOutputFactory.newInstance();
// OutputStream os = new FileOutputStream(new File("D:/getPointReq.xml"));
// XMLStreamWriter xmlWriter = xof.createXMLStreamWriter(os);
// getPointData56.serialize(new javax.xml.namespace.QName(
// "http://www.topsunit.com/rms",
// "getPointDataReq",
// "ns1"), xmlWriter);
// }catch(Exception e){
// e.printStackTrace();
// }
try {
GetPointDataResponse response = POSServerCaller.getWebService(60000000L).getPointData(getPointData56);
GetPointDataResult result = response.getGetPointDataResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_POINTDATA_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_POINTDATA_FILENAME_BACK);
return;
}
ArrayOfpoint aom = result.getPoints();
if(null == aom){
getLocalProcessor().deleteDataFile(AppConstants.DATA_POINTDATA_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_POINTDATA_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有积分消费数据");
return;
}
PointDataDTO pointDataDTO = new PointDataDTO();
List<com.topsun.posclient.datamodel.PointData> pointDataList = new ArrayList<com.topsun.posclient.datamodel.PointData>();
com.topsun.posclient.webservice.dto.Point[] memberArray = aom.getPoint();
for(int i=0; i<memberArray.length; i++){
com.topsun.posclient.webservice.dto.Point m = memberArray[i];
com.topsun.posclient.datamodel.PointData pointData = new com.topsun.posclient.datamodel.PointData();
pointData.setDocNum(m.getDocNum());
pointData.setExchangeMoney(m.getExchangeMoney());
pointData.setRatio(m.getExchangeRatio());
pointData.setId(m.getId());
pointData.setStartDate(ProjectUtil.getDateString(m.getStartDate()));
pointData.setEndDate(ProjectUtil.getDateString(m.getEndDate()));
pointDataList.add(pointData);
}
pointDataDTO.setPointDataList(pointDataList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(pointDataDTO, AppConstants.DATA_POINTDATA_FILENAME_BACK, AppConstants.DATA_POINTDATA_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载积分消费数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载积分消费数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成积分消费数据下载",count);
}
});
}
/**
* 发票数据文件下载
* @param progress
* @param count
* @throws Exception
*/
public void downloadInvoiceData(SyncProgress progress,final int count) throws Exception{
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始下载发票数据");
GetInvoiceReqCondition condition = new GetInvoiceReqCondition();
condition.setShopID(Integer.valueOf(POSClientApp.get().getSysConfig().getOwnerShop()));
condition.setPos(POSClientApp.get().getSysConfig().getPosNo());
GetInvoiceReq req = new GetInvoiceReq();
req.setUserCredential(POSServerCaller.getDefaultUserCredential());
req.setCondition(condition);
GetInvoice getInvoice60 = new GetInvoice();
getInvoice60.setGetInvoiceReq(req);
try {
GetInvoiceResponse response = POSServerCaller.getWebService(60000000L).getInvoice(getInvoice60);
GetInvoiceResult result = response.getGetInvoiceResult();
String flag = result.getResult().getFlag();
if (!flag.equals(POSServerCaller.SUCCESS)) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, result.getResult().getMsg());
SyncDataListenerManager.getInstance().fireChange(result.getResult().getMsg());
getLocalProcessor().deleteDataFile(AppConstants.DATA_INVOICE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_INVOICE_FILENAME_BACK);
return;
}
ArrayOfInvoice aoi = result.getGetInvoice();
if(null == aoi){
getLocalProcessor().deleteDataFile(AppConstants.DATA_INVOICE_FILENAME);
getLocalProcessor().deleteDataFile(AppConstants.DATA_INVOICE_FILENAME_BACK);
SyncDataListenerManager.getInstance().fireChange("没有发票数据");
return;
}
InvoiceDTO invoiceDTO = new InvoiceDTO();
List<com.topsun.posclient.datamodel.Invoice> invoiceList = new ArrayList<com.topsun.posclient.datamodel.Invoice>();
com.topsun.posclient.webservice.dto.Invoice[] invoiceArray = aoi.getInvoice();
for(int i=0; i<invoiceArray.length; i++){
com.topsun.posclient.webservice.dto.Invoice ii = invoiceArray[i];
com.topsun.posclient.datamodel.Invoice invoiceData = new com.topsun.posclient.datamodel.Invoice();
invoiceData.setFPDM(ii.getFPDM());
invoiceData.setFPH(ii.getFPH());
invoiceData.setFRGS(ii.getFRGS());
invoiceData.setID(ii.getID());
invoiceData.setPOS(ii.getPOS());
invoiceData.setShopID(ii.getShopID());
invoiceList.add(invoiceData);
if(i == 0){
invoiceData.setLastFPH(null);
invoiceData.setLastFPDM(null);
if(invoiceArray.length > 1){
invoiceData.setNextFPH(invoiceArray[i+1].getFPH());
invoiceData.setNextFPDM(invoiceArray[i+1].getFPDM());
}
}else if( i == invoiceArray.length - 1){
invoiceData.setLastFPH(invoiceArray[i-1].getFPH());
invoiceData.setLastFPDM(invoiceArray[i-1].getFPDM());
invoiceData.setNextFPH(null);
invoiceData.setNextFPDM(null);
}else{
invoiceData.setLastFPH(invoiceArray[i-1].getFPH());
invoiceData.setLastFPDM(invoiceArray[i-1].getFPDM());
invoiceData.setNextFPH(invoiceArray[i+1].getFPH());
invoiceData.setNextFPDM(invoiceArray[i+1].getFPDM());
}
}
invoiceDTO.setInvoiceList(invoiceList);
// 更新本地数据文件
getLocalProcessor().updateLocalDataFile(invoiceDTO, AppConstants.DATA_INVOICE_FILENAME_BACK, AppConstants.DATA_INVOICE_FILENAME);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "下载发票数据失败", e);
SyncDataListenerManager.getInstance().fireChange("下载发票数据失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成发票数据下载",count);
}
});
}
/**
* 上传零售数据
*
* @param progress
* @param count
* @throws Exception
*/
public void uploadPartSalesData(SyncProgress progress, final int count)
throws Exception {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> " + MessageResources.message_tips_startsyncsales);
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_PARTSALES_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有零售数据");
return;
}
uploadPartSales(file, AppConstants.DATA_PARTSALES_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "零售数据上传失败", e);
SyncDataListenerManager.getInstance().fireChange("零售数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> " + MessageResources.message_tips_endsyncsales, count);
}
});
}
/**
* 上传退换货数据
*
* @param progress
* @param count
* @throws Exception
*/
public void uploadReturnedData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传退换货数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_RETURNED_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有退换货数据");
return;
}
uploadPartSales(file, AppConstants.DATA_RETURNED_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "退货数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("退货数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成退换货数据上传", count);
}
});
}
/**
* 上传旧金数据
* @param progress
* @param count
* @throws Exception
*/
public void uploadOldGoldData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传旧金数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_OLDGOLD_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有旧金数据");
return;
}
uploadPartSales(file, AppConstants.DATA_OLDGOLD_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "旧金数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("旧金数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成旧金数据上传", count);
}
});
}
/**
* 上传到期取货数据
* @param progress
* @param count
* @throws Exception
*/
public void uploadGoldTimeoutData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传到期取货数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_GOLDTIMEOUT_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有到期取货数据");
return;
}
uploadPartSales(file, AppConstants.DATA_GOLDTIMEOUT_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "到期取货数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("到期取货数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成到期取货数据上传", count);
}
});
}
/**
* 上传投资预订数据
* @param progress
* @param count
* @throws Exception
*/
public void uploadGoldBookingData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传投资预订数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_GOLDBOOKING_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有投资预订数据");
return;
}
uploadPartSales(file, AppConstants.DATA_GOLDBOOKING_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "投资预订数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("投资预订数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成投资预订数据上传", count);
}
});
}
/**
* 上传投资现货数据
* @param progress
* @param count
* @throws Exception
*/
public void uploadGoldSalesData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传投资现货数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_GOLDSALES_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有投资现货数据");
return;
}
uploadPartSales(file, AppConstants.DATA_GOLDSALES_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "投资现货数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("投资现货数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成投资现货数据上传", count);
}
});
}
/**
* 上传投资回购数据
* @param progress
* @param count
* @throws Exception
*/
public void uploadGoldBackData(SyncProgress progress, final int count) throws Exception {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
SyncDataListenerManager.getInstance().fireChange("---------------> 开始上传投资回购数据");
File file = new File(ProjectUtil.getRuntimeClassPath() + AppConstants.DATA_GOLDBACK_PATH);
try {
File[] dataFiles = file.listFiles();
if(dataFiles.length == 2){
SyncDataListenerManager.getInstance().fireChange("本地没有投资回购数据");
return;
}
uploadPartSales(file, AppConstants.DATA_GOLDBACK_HIS_PATH);
} catch (Exception e) {
LoggerUtil.logError(SystemActivator.PLUGIN_ID, "投资回购数据上传失败", e);
SyncDataListenerManager.getInstance() .fireChange("投资回购数据上传失败");
return;
}
SyncDataListenerManager.getInstance().fireChange("---------------> 完成投资回购数据上传", count);
}
});
}
/**
* 上传零售信息
* @param file
* @param dataPath
* @throws RemoteException
* @throws Exception
*/
private void uploadPartSales(File file, String dataPath) throws RemoteException, Exception {
File[] dataFiles = file.listFiles();
for (int i = 0; i < dataFiles.length; i++) {
File dataFile = dataFiles[i];
if (dataFile.isFile()) {
RetailDTO dto = (RetailDTO) getLocalProcessor()
.getObjectFromXml(getLocalProcessor().getDataFileContent(dataFile), RetailDTO.class);
List<com.topsun.posclient.datamodel.Retail> list = dto.getRetailList();
if (null == list || list.size() <= 0) {
return;
}
Retail[] retailArray = new Retail[list.size()];
for (int j = 0; j < list.size(); j++) {
com.topsun.posclient.datamodel.Retail asi = list.get(j);
Retail retail = new Retail();
retail.setSalesDate(ProjectUtil.getCalendar(asi.getSalesDate()));
retail.setShopID(asi.getShopID());
retail.setCashierID(asi.getIsMember());
retail.setDocNum(asi.getDocNum());
retail.setIsReturn(asi.getIsReturn());
retail.setIsMember(asi.getIsMember());
retail.setAccountData(ProjectUtil.getCalendar(asi.getAccountData()));
retail.setEnablePoint(Integer.valueOf(asi.getEnablePoint()));
retail.setCardNo(asi.getCardNo());
retail.setCashierID(asi.getCashierID());
retail.setDiscount(asi.getDiscount());
retail.setDiscountAccount(asi.getDiscountAccount());
retail.setDiscountAmount_M(asi.getDiscountAmount_M());
retail.setDiscountRate(asi.getDiscountAmount_M());
retail.setDiscountToZero(asi.getDiscountToZero());
retail.setInvoceAmount(asi.getInvoceAmount());
retail.setIsReplace(asi.getIsReplace());
retail.setMemberDiscount(asi.getMemberDiscount());
retail.setReceivable(asi.getReceivable());
retail.setSalesType(asi.getSalesType());
retail.setTotals(asi.getTotals());
retail.setTotalSales(asi.getTotalSales());
retail.setUsePoint(asi.getUsePoint());
retail.setRetail_FPs(POSServerCaller.getArrayOfRetail_FP(asi.getRetailFPList()));
retail.setRetail_Ms(POSServerCaller.getArrayOfRetail_M(asi.getRetailMList()));
retail.setRetail_Ps(POSServerCaller.getArrayOfRetail_P(asi.getRetailPList()));
retail.setRetail_OldGolds(POSServerCaller.getArrayOfRetail_OldGold(asi.getOldGoldList()));
retail.setRetail_MPs(POSServerCaller.getArrayOfRetail_MP(asi.getRetailMPList()));
retail.setRetail_UnSaleParts(POSServerCaller.getArrayOfRetail_UnSalePart(asi.getUnSalePartList()));
retailArray[j] = retail;
}
ArrayOfRetail arrayOfRetail = new ArrayOfRetail();
arrayOfRetail.setRetail(retailArray);
SavePartSalesReq req = new SavePartSalesReq();
req.setUserCredential(POSServerCaller
.getDefaultUserCredential());
req.setRetails(arrayOfRetail);
SavePartSales savePartSales12 = new SavePartSales();
savePartSales12.setSavePartSalesReq(req);
SavePartSalesResponse response = POSServerCaller.getWebService(60000000L).savePartSales(savePartSales12);
String flag = response.getSavePartSalesResult().getResult().getFlag();
if(flag.equals(POSServerCaller.SUCCESS)){
getLocalProcessor().moveFileToHis(dataPath, dataFiles[i]);
}else{
SyncDataListenerManager.getInstance().fireChange(response.getSavePartSalesResult().getResult().getMsg());
}
}
}
}
/**
* 保存到本地文件
*
* @param filepath
* @param fileContent
* @throws Exception
*/
public void saveLocalFile(String filepath, String fileContent)
throws Exception {
File file = new File(ProjectUtil.getRuntimeClassPath() + filepath);
file.deleteOnExit();
BufferedWriter output = null;
try {
file.createNewFile();
output = new BufferedWriter(new FileWriter(file));
output.write(fileContent);
} catch (Exception e) {
throw new Exception(MessageResources.message_tips_sync_failer);
} finally {
if (null != output) {
output.close();
}
}
}
/**
* 进度显示显示线程
*
* @param infoText
* @param text
*/
public void createDisplayThread(final Text infoText, final String text) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
{
String str = infoText.getText() + "\r\n";
infoText.setText(str + text);
}
}
});
}
public void setProgress(final ProgressBar bar, final int worked) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
{
bar.setSelection(worked);
}
}
});
}
}