using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DeiNiu.wms.Logical;
using System.Transactions;
using DeiNiu.wms.Data.Model;
using DeiNiu.Utils;
using System.Net;
namespace DeiNiu.Wcf
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“ScheduledService”。
public class ScheduledService : basicService,IScheduledService
{
static int syncOperId = 3335;
static lWmsInRequest _lir;
static WmsGoods _wgoods;
WmsGoods wgoods
{
get
{
if (_wgoods == null )
{
_wgoods = new WmsGoods();
}
return _wgoods;
}
}
lWmsInRequest lir
{
get
{
if (_lir == null )
{
_lir = new lWmsInRequest(syncOperId);
}
return _lir;
}
}
private static lWmsOutRequest _lor;
lWmsOutRequest lor
{
get
{
if (_lor == null )
{
_lor = new lWmsOutRequest(syncOperId);
}
return _lor;
}
}
private static lOwner _lOwner;
lOwner lOwnerObj
{
get
{
if (_lOwner == null )
{
_lOwner = new lOwner(syncOperId);
}
return _lOwner;
}
}
private static lCustomer _lcust;
lCustomer lcust
{
get
{
if (_lcust == null)
{
_lcust = new lCustomer(syncOperId);
}
return _lcust;
}
}
private static lWmsOutPickRequest _lop ;
lWmsOutPickRequest lop
{
get
{
if (_lop == null)
{
_lop = new lWmsOutPickRequest(syncOperId);
}
return _lop;
}
}
private static lWmsOutPickPort _lopp;
lWmsOutPickPort lopp
{
get
{
if (_lopp == null )
{
_lopp = new lWmsOutPickPort(syncOperId );
}
return _lopp;
}
}
/*
public void syncOutRequest()
{
lor.syncOrders();
}
///
/// sync out request,create pickorders
///
public void preProcessOutOrders()
{
lor.preProcessOutOrders();
}
*/
///
/// sync inrequests
/// 启用入库收货、验收模块后不再自动同步入库数据
///
public void syncInRequest()
{
// lir.syncOrders();
}
public void syncGoods()
{
log.Debug("start syncGoods ");
try
{
wgoods.syncGoods();
}
catch (Exception e)
{
log.Error(e);
}
}
public int syncNewOwners()
{
log.Debug("start syncOwner ");
try
{
return lOwnerObj.syncOwner();
}
catch (Exception e)
{
log.Error(e);
}
return 0;
}
public int syncCustomer()
{
log.Debug("start syncCustomer ");
try
{
return lcust.syncCustomer();
}
catch (Exception e)
{
log.Error(e);
}
return 0;
}
public string processOut(enumOutStockRequestStatus status)
{
if(lor.isErpWorking())
{
return "ERP transfering data to wms, sleep a while...";
}
if (!String.IsNullOrEmpty(WmsConstants.CURRENT_PANDIAN_ORDER))
{
return "盘点进行中。。。。" + WmsConstants.CURRENT_PANDIAN_ORDER;
}
log.Debug("start sync and create pickoutrequest ,status " +status);
string result = "任务完成。。。";
try
{
lor.processOutOrders(status);
}
catch (Exception e)
{
log.Error(e);
result += " | processOutOrders error:" + e.Message;
}
log.Debug("start createPDAPickTasks ");
try
{
lop.createPDAPickTasks();
}
catch (Exception e)
{
log.Error(e);
result += " | createPDAPickTasks error:" + e.Message;
}
try
{
log.Debug("start createPickWaves ");
bool rt = lopp.createPickWaves(); ;
log.Debug("end createPickWaves ,success? " + rt);
}
catch (Exception e)
{
log.Error(e);
result += " | createPickWaves error:" + e.Message;
}
return result;
}
/*
public void createPDAPickTasks()
{
log.Debug ("begin ---to create pick out pda task data");
if (isProcessBatchWaveing)
{
log.Debug("!!!!!!!!!!!!!!!!! create pick out pda data ... is processing... return ....");
return;
}
isProcessBatchWaveing = true;
try
{
lop.createPDAPickTasks();
LogHelper.debug(typeof(WmsOutPickRequestService), "end ---to create pick out pda task data");
isProcessBatchWaveing = false;
}
catch (Exception e)
{
throw e;
}
finally
{
isProcessBatchWaveing = false;
}
}
public void syncAndCreatePickRequest(enumOutStockRequestStatus status)
{
lor.preProcessOutOrdersImp(status);
}
static bool isCreateWaveing = false;
public bool createPickWaves()
{
log.Debug( "begin to createPickWaves...");
if (isCreateWaveing)
{
log.Debug ( "!!!!!!!!!!!!!!!!! new pick wave ... is processing... return ....");
return false;
}
isCreateWaveing = true;
try
{
bool ok = lopp.createPickWaves();
isCreateWaveing = false;
return ok;
}
catch (Exception e)
{
log.Error(e);
}
finally
{
isCreateWaveing = false;
}
isCreateWaveing = false;
return true;
}
*/
public int[] getJobInterVal()
{
_lop = new lWmsOutPickRequest(syncOperId);
int[] a = new int[5];
a[0] = WmsConstants.JOB_OUT_REQUEST_INTERVAL;
a[1] = WmsConstants.JOB_TEST_REQUEST_INTERVAL;
a[2] = WmsConstants.JOB_BASIC_INFO_SYNC_INTERVAL;
a[3] = WmsConstants.JOB_OUT_REQUEST_NO_STOCK_CHECK_INTERVAL;
a[4] = WmsConstants.JOB_NOTICE_ERP;
return a;
}
public int getWaveInterval()
{
WaveRule wr = new WaveRule() .getCurrentActiveRule(enumWaveRuleType.普通波次);
return wr.interval;
}
public void truncateDataForTestOnly()
{
try {
#if DEBUG
lir.createDataForTestOnly();
#endif
}catch(Exception er)
{
log.Error(er);
}
}
public string noticeErp()
{
log.Debug("start noticeErp ---------------->>");
string rt = "";
// to notice purch in
try
{
lir.retryNoticeErpValidIn();
}
catch (Exception er)
{
rt = er.Message;
log.Error(er);
}
// to notice sale out
try
{
// lop.unloadPickrequests(); //already do it when start truck
}
catch (Exception er)
{
rt = er.Message;
log.Error(er);
}
try
{
if (WmsConstants.ERP_NOTICE_STOCK_OUT_DOING)
{
log.Debug(" 正在同步工作中,稍后再试");
return " 正在同步工作中,稍后再试";
}
lop.retryNoticeErp();
}
catch (Exception er)
{
rt = er.Message;
log.Error(er);
}
try
{
lop.retryNoticeErpOrder();
}
catch (Exception er)
{
rt = er.Message;
log.Error(er);
}
// to notice Obsolete
// to notice 盘点
log.Debug("end noticeErp ------------<< ");
return rt;
}
}
}