using HH.WMS.CoreServer.DAL;
|
using HH.WMS.Entitys;
|
using HH.WMS.Entitys.Algorithm;
|
using HH.WMS.Entitys.Basic;
|
using HH.WMS.Entitys.Common;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.CoreServer.BLL
|
{
|
public class OutDataBLL : BaseBLL
|
{
|
public DataTable GetOutMstData(string tableName)
|
{
|
return CreateDAL<OutDataDAL>().GetOutMstData(tableName);
|
}
|
|
public DataTable GetOutDtlData(string collectionName, string cCode)
|
{
|
return CreateDAL<OutDataDAL>().GetOutDtlData(collectionName, cCode);
|
}
|
|
public bool AddRdrecord(DataTable RdrecordMstEntityTable, string dtlTableName, string opType)
|
{
|
//主表集合
|
List<TN_WM_OUT_MSTEntity> outMstEntityList = new List<TN_WM_OUT_MSTEntity>();
|
|
string stockStr = WebApiManager.HttpWMS_Get("api/Common/NoTokenStockList");
|
OperateResult or = JsonConvert.DeserializeObject<OperateResult>(stockStr);
|
List<TN_AB_STOCKEntity> stockList = JsonConvert.DeserializeObject<List<TN_AB_STOCKEntity>>(or.Data.ToString());
|
|
for (int i = 0; i < RdrecordMstEntityTable.Rows.Count; i++)
|
{
|
#region 拼接出库单主表
|
string postDataOpNo = "{\"appCode\":\"WMS\",\"ruleName\":\"" + Constants.Rule_OutOrder + "\",\"orgId\":\"\",\"orgFlag\":\"0\"}";
|
string opNo = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postDataOpNo);
|
|
if (opNo == "")
|
{
|
Log.Info("生成出库单号失败!", "AutoBom接口GenBillNo未调通!");
|
return false;
|
}
|
TN_WM_OUT_MSTEntity outMstEntity = new TN_WM_OUT_MSTEntity();
|
outMstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
|
outMstEntity.CN_S_OP_NO = opNo;
|
//outMstEntity.CN_T_OPERATE = Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dDate"].ToString());
|
if (dtlTableName == "Rdrecords32")
|
{
|
outMstEntity.CN_S_CUSTOMER = RdrecordMstEntityTable.Rows[i]["cCusCode"].ToString();
|
outMstEntity.CN_S_CUSTOMER_NAME = RdrecordMstEntityTable.Rows[i]["cCusName"].ToString();
|
outMstEntity.CN_S_DETAIL_ADDRESS = RdrecordMstEntityTable.Rows[i]["cShipAddress"].ToString();
|
}
|
else
|
{
|
outMstEntity.CN_S_CUSTOMER = "";
|
outMstEntity.CN_S_CUSTOMER_NAME = "";
|
}
|
outMstEntity.CN_S_STOCK_CODE = stockList[0].CN_S_STOCK_CODE; // RdrecordMstEntityTable.Rows[i]["cWhCode"].ToString();
|
outMstEntity.CN_S_FROM_NO = RdrecordMstEntityTable.Rows[i]["MainId"].ToString();
|
outMstEntity.CN_S_AUDITOR = RdrecordMstEntityTable.Rows[i]["cChecker_Erp"].ToString();
|
outMstEntity.CN_T_AUDIT_TIME = string.IsNullOrEmpty(RdrecordMstEntityTable.Rows[i]["dCheckDate_Erp"].ToString()) ? DateTime.Now : Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dCheckDate_Erp"].ToString());
|
outMstEntity.CN_T_CREATE = Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dCreateDate"].ToString());
|
|
//未传递 默认值
|
outMstEntity.CN_T_OP_DATE = DateTime.Now;
|
outMstEntity.CN_S_STATE = Constants.State_Audit;
|
outMstEntity.CN_S_OWNER = Constants.DefaultU8Owner;
|
outMstEntity.CN_S_OP_TYPE = opType;
|
outMstEntity.CN_S_OP_FROM = "U8";
|
outMstEntity.CN_S_FROM_NO = RdrecordMstEntityTable.Rows[i]["cCode"].ToString();
|
outMstEntity.CN_S_AUDIT_REMARK = "";
|
outMstEntity.CN_S_OPERATOR = "汉和信息";
|
outMstEntity.CN_S_CREATOR = "hh";
|
outMstEntity.CN_S_CREATOR_BY = "汉和信息";
|
outMstEntity.CN_S_MODIFY = "hh";
|
outMstEntity.CN_S_MODIFY_BY = "汉和信息";
|
outMstEntity.CN_T_MODIFY = DateTime.Now;
|
outMstEntity.CN_S_NOTE = "U8对接导入";
|
#endregion
|
|
#region 拼接出库单子表
|
//子表集合
|
List<TN_WM_OUT_DTLEntity> outDtlEntityList = new List<TN_WM_OUT_DTLEntity>();
|
|
DataTable RdrecordDtlEntityTable = BLLCreator.Create<OutDataBLL>().GetOutDtlData(dtlTableName, outMstEntity.CN_S_FROM_NO);
|
for (int j = 0; j < RdrecordDtlEntityTable.Rows.Count; j++)
|
{
|
AutoBomItemEntity itemenity = BLLCreator.Create<MongoBLL>().GetItemEntity(RdrecordDtlEntityTable.Rows[j]["cInvCode"].ToString()); ;
|
if (itemenity == null)
|
{
|
Log.Info("拼接子表失败!", "物料编码 " + RdrecordDtlEntityTable.Rows[j]["cInvCode"].ToString() + " 不存在或者未定版!");
|
return false;
|
}
|
|
TN_WM_OUT_DTLEntity dtlEntity = new TN_WM_OUT_DTLEntity();
|
dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
|
dtlEntity.CN_T_PRODUCTION = Convert.ToDateTime(RdrecordDtlEntityTable.Rows[j]["dMadeDate"].ToString());
|
dtlEntity.CN_T_MODIFY = DateTime.Now;
|
dtlEntity.CN_T_CREATE = DateTime.Now;
|
dtlEntity.CN_S_STATE = Constants.State_Audit;
|
dtlEntity.CN_S_SERIAL_NO = "";
|
dtlEntity.CN_S_PRODUCTION_BATCH = RdrecordDtlEntityTable.Rows[j]["cBatch"].ToString();
|
dtlEntity.CN_S_OP_NO = outMstEntity.CN_S_OP_NO;
|
dtlEntity.CN_S_MSTGUID = outMstEntity.CN_GUID;
|
dtlEntity.CN_S_MODEL = itemenity.CN_S_MODEL;
|
dtlEntity.CN_S_ITEM_NAME = itemenity.CN_S_ITEM_NAME;
|
dtlEntity.CN_S_ITEM_CODE = itemenity.CN_S_ITEM_CODE;
|
dtlEntity.CN_N_ROW_NO = Convert.ToInt32(RdrecordDtlEntityTable.Rows[j]["iRowNo"].ToString());
|
|
|
string unit = RdrecordDtlEntityTable.Rows[j]["cComUnitName"].ToString();
|
decimal qty = RdrecordDtlEntityTable.Rows[j]["iQuantity"].ToString() == null ? 0 : Convert.ToDecimal(RdrecordDtlEntityTable.Rows[j]["iQuantity"].ToString());
|
|
if (unit != itemenity.CN_S_MEASURE_UNIT)
|
{
|
if (string.IsNullOrEmpty(itemenity.CN_S_CONERSION))
|
{
|
Log.Info("拼接子表失败!", "请维护物料 " + itemenity.CN_S_ITEM_CODE + " 的换算比例!");
|
return false;
|
}
|
|
unit = itemenity.CN_S_MEASURE_UNIT;
|
decimal jishu = Convert.ToDecimal(itemenity.CN_S_CONERSION.Substring(0, itemenity.CN_S_CONERSION.IndexOf("-")));
|
if (jishu == 0) jishu = 1;
|
dtlEntity.CN_F_QUANTITY = Math.Floor(qty / jishu);
|
}
|
else
|
{
|
dtlEntity.CN_F_QUANTITY = qty;
|
}
|
|
dtlEntity.CN_S_MEASURE_UNIT = unit;
|
dtlEntity.CN_S_ITEM_STATE = Constants.ItemState_WaitCheck;
|
|
dtlEntity.CN_S_CREATOR = "hh";
|
dtlEntity.CN_S_CREATOR_BY = "汉和信息";
|
dtlEntity.CN_S_MODIFY = "hh";
|
dtlEntity.CN_S_MODIFY_BY = "汉和信息";
|
dtlEntity.CN_T_MODIFY = DateTime.Now;
|
dtlEntity.CN_S_FIGURE_NO = "";
|
|
dtlEntity.CN_S_NOTE = "U8对接导入";
|
|
outDtlEntityList.Add(dtlEntity);
|
}
|
outMstEntity.OutDtlList = outDtlEntityList;
|
|
outMstEntityList.Add(outMstEntity);
|
|
#endregion
|
}
|
|
string resultStrMst = WebApiManager.HttpWMS_Post("Api/Out/AddU8OutData", JsonConvert.SerializeObject(outMstEntityList));
|
if (resultStrMst == "")
|
{
|
Log.Info("保存主子表调通!", "Api/Out/AddU8OutData");
|
return false;
|
}
|
OperateResult orMst = JsonConvert.DeserializeObject<OperateResult>(resultStrMst);
|
if (!orMst.Success)
|
{
|
Log.Info("保存主子表接口调用失败!", orMst.Msg);
|
return false;
|
}
|
return orMst.Success;
|
}
|
|
public SqlExecuteResult UpdateRdrecordCheckState(DataTable RdrecordMstEntityTable, string collectionName)
|
{
|
return CreateDAL<OutDataDAL>().UpdateRdrecordCheckState(RdrecordMstEntityTable, collectionName);
|
}
|
|
public bool UpdateRdrecord(DataTable RdrecordMstEntityTable, string collectionName)
|
{
|
List<U8_TransVouchEntity> transVouchList = new List<U8_TransVouchEntity>();
|
|
for (int i = 0; i < RdrecordMstEntityTable.Rows.Count; i++)
|
{
|
string cCode = RdrecordMstEntityTable.Rows[i]["cCode"].ToString();
|
DataTable RdrecordDtlEntityTable = BLLCreator.Create<OutDataBLL>().GetOutDtlData(collectionName, cCode);
|
|
for (int j = 0; j < RdrecordDtlEntityTable.Rows.Count; j++)
|
{
|
U8_TransVouchEntity transVouchEntity = new U8_TransVouchEntity();
|
|
string itemCode = RdrecordDtlEntityTable.Rows[i]["cInvCode"].ToString();
|
string productBatch = RdrecordDtlEntityTable.Rows[i]["cBatch"].ToString();
|
|
transVouchEntity.CN_S_ITEM_CODE = itemCode;
|
transVouchEntity.CN_S_PRODUCTION_BATCH = productBatch;
|
transVouchEntity.CN_S_BATCH_NO = productBatch;
|
transVouchEntity.CN_S_ITEM_STATE = Constants.ItemState_Qualified;
|
|
transVouchList.Add(transVouchEntity);
|
}
|
}
|
|
string result = WebApiManager.HttpWMS_Post("Api/In/UpdateTransVouchItemState", JsonConvert.SerializeObject(transVouchList));
|
OperateResult opResult = JsonConvert.DeserializeObject<OperateResult>(result);
|
return opResult.Success;
|
}
|
|
public SqlExecuteResult UpdateRdrecordCheckFlag(string opNo, string tableName)
|
{
|
return CreateDAL<OutDataDAL>().UpdateRdrecordCheckFlag(opNo, tableName);
|
}
|
}
|
}
|