using HH.WMS.BLL.Basic;
using HH.WMS.BLL.InStock;
using HH.WMS.BLL.Interface;
using HH.WMS.BLL.SysMgr;
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.Common.Response;
using HH.WMS.DAL;
using HH.WMS.DAL.Algorithm;
using HH.WMS.DAL.Basic;
using HH.WMS.DAL.SysMgr;
using HH.WMS.DAL.Tzlj;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Entitys;
using HH.WMS.Entitys.External;
using HH.WMS.Entitys.Tzlj;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.BLL.External
{
///
/// 蓝月亮
///
public class WmsApiForLylBLL : WmsApiBaseBLL
{
#region InWorkArea
public override ExecuteInWorkAreaPara InWorkAreaHandlePara(ref ExecuteInWorkAreaPara executeInWorkAreaPara, LogPara logPara)
{
//任务号为空通过autobom生成任务号
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.taskNo))
{
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
executeInWorkAreaPara.InWorkAreaEntity.taskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.taskNo))
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("获取AUTOBOM入库任务号异常,请检查是否维护生成规则!");
return executeInWorkAreaPara;
}
}
//托盘码为空通过autobom生成托盘码
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.trayCode))
{
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.VirtualTray + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
executeInWorkAreaPara.InWorkAreaEntity.trayCode = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.trayCode))
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("生成虚拟托盘号异常,请检查是否维护生成规则!");
return executeInWorkAreaPara;
}
}
//验证物料编码
if (executeInWorkAreaPara.InWorkAreaEntity.data != null)
{
foreach (var itemData in executeInWorkAreaPara.InWorkAreaEntity.data)
{
var item = BLLCreator.Create().GetItem(itemData.itemCode);
if (item != null)
{
itemData.itemPackUnit = item.CN_S_PACK_UNIT;
itemData.itemName = item.CN_S_ITEM_NAME;
}
else
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("物料" + itemData.itemCode + "在AutoBom中没有维护");
return executeInWorkAreaPara;
}
}
}
// 是否有终点位置
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.endBit))
{
// 获取蓝月亮wms 提供的终点位置
string startBit = executeInWorkAreaPara.InWorkAreaEntity.startBit;
string itemCode = executeInWorkAreaPara.InWorkAreaEntity.itemCode;
var postBit = "{\"startBit\":\"" + startBit + "\",\"itemCode\":\"" + itemCode + "\"}";
// 接口待定
executeInWorkAreaPara.InWorkAreaEntity.endBit = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postBit);
// 如果蓝月亮wms没有提供终点位置,在配置文件中获取终点
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.endBit))
{
// string Type = System.Configuration.ConfigurationManager.AppSettings["Type"].ToString();
executeInWorkAreaPara.InWorkAreaEntity.endBit = System.Configuration.ConfigurationManager.AppSettings[startBit].ToString();
}
if (string.IsNullOrEmpty(executeInWorkAreaPara.InWorkAreaEntity.endBit))
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("未能获取终点位置!");
return executeInWorkAreaPara;
}
}
//锁定终点货位
OperateResult lockResult = BLLCreator.Create().UpdateState(executeInWorkAreaPara.InWorkAreaEntity.endBit, "预入库锁定", "正常");
if (lockResult.Success && lockResult.AffectedRows > 0)
{
AutoBomLocationEntity locationModel = DALCreator.Create().GetModel(executeInWorkAreaPara.InWorkAreaEntity.endBit);
//添加货位状态变化
BLLCreator.Create().AddStateChange(executeInWorkAreaPara.InWorkAreaEntity.endBit, "正常", "预入库锁定", "入库需要锁定终点货位防止其他资源竞争", executeInWorkAreaPara.InWorkAreaEntity.sysName, "", "", locationModel.CN_S_STOCK_CODE, locationModel.CN_S_AREA_CODE, null);
executeInWorkAreaPara.RollbackLocations.Add(executeInWorkAreaPara.InWorkAreaEntity.endBit);
}
else
{
if (!lockResult.Success)
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("锁定终点货位" + executeInWorkAreaPara.InWorkAreaEntity.endBit + "失败!详细原因为:" + lockResult.Msg);
}
else
{
executeInWorkAreaPara.BasisResponse = BasisResponse.Error("锁定终点货位" + executeInWorkAreaPara.InWorkAreaEntity.endBit + "失败!详细原因为:SqlExecuteResult影响行数为0");
}
return executeInWorkAreaPara;
}
return executeInWorkAreaPara;
}
//public override ExecuteInWorkAreaPara InWorkAreaCreateTask(ref ExecuteInWorkAreaPara executeInWorkAreaPara, LogPara logPara)
//{
// executeInWorkAreaPara.TransportEntity.CN_S_TASK_NO = executeInWorkAreaPara.InWorkAreaEntity.taskNo;
// executeInWorkAreaPara.TransportEntity.CN_S_CIR_OBJ = "托盘";
// executeInWorkAreaPara.TransportEntity.CN_S_CIR_OBJ_CODE = executeInWorkAreaPara.InWorkAreaEntity.trayCode;
// executeInWorkAreaPara.TransportEntity.CN_S_START_BIT = executeInWorkAreaPara.InWorkAreaEntity.startBit;
// executeInWorkAreaPara.TransportEntity.CN_S_STATE = Constants.TaskStateList[0];
// executeInWorkAreaPara.TransportEntity.CN_N_PRIORITY = executeInWorkAreaPara.InWorkAreaEntity.priority;
// executeInWorkAreaPara.TransportEntity.CN_T_CREATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//DateTime.Now.ToString();
// executeInWorkAreaPara.TransportEntity.CN_T_MODIFY = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//DateTime.Now.ToString();
// executeInWorkAreaPara.TransportEntity.CN_S_REMARK = executeInWorkAreaPara.InWorkAreaEntity.remark;
// executeInWorkAreaPara.TransportEntity.CN_S_START_AREA = executeInWorkAreaPara.InWorkAreaEntity.startArea;
// executeInWorkAreaPara.TransportEntity.CN_S_STOCK_CODE = executeInWorkAreaPara.InWorkAreaEntity.startStock;
// executeInWorkAreaPara.TransportEntity.CN_S_EXT3 = executeInWorkAreaPara.InWorkAreaEntity.moduleType;
// executeInWorkAreaPara.TransportEntity.CN_S_TASK_TYPE = executeInWorkAreaPara.InWorkAreaEntity.isTransport == "Y" ? "转运" : "入库";
// executeInWorkAreaPara.TransportEntity.CN_S_START_AREA_TYPE = executeInWorkAreaPara.StartStockAreaEntity.CN_S_STRUCTURE;
// executeInWorkAreaPara.TransportEntity.CN_C_START_IS_CONTROL_QTY = executeInWorkAreaPara.StartStockAreaEntity.CN_C_IS_CONTROL_QTY;
// executeInWorkAreaPara.TransportEntity.CN_S_START_CONTROL_INV = executeInWorkAreaPara.StartStockAreaEntity.CN_C_IS_INVENTORY;
// //TODO EndLocationEntity、EndStockAreaEntity需要赋值
// executeInWorkAreaPara.TransportEntity.CN_S_END_BIT = executeInWorkAreaPara.EndLocationEntity.CN_S_LOCATION_CODE;
// executeInWorkAreaPara.TransportEntity.CN_S_END_AREA = executeInWorkAreaPara.EndLocationEntity.CN_S_AREA_CODE;
// executeInWorkAreaPara.TransportEntity.CN_C_END_IS_CONTROL_QTY = executeInWorkAreaPara.EndStockAreaEntity.CN_C_IS_CONTROL_QTY;
// executeInWorkAreaPara.TransportEntity.CN_S_END_CONTROL_INV = executeInWorkAreaPara.EndStockAreaEntity.CN_C_IS_INVENTORY;
// executeInWorkAreaPara.TransportEntity.CN_S_END_AREA_TYPE = executeInWorkAreaPara.EndStockAreaEntity.CN_S_STRUCTURE;
// executeInWorkAreaPara.TransportEntity.CN_S_CREATOR = executeInWorkAreaPara.InWorkAreaEntity.creatorBy;
// executeInWorkAreaPara.TransportEntity.CN_S_CREATOR_BY = executeInWorkAreaPara.InWorkAreaEntity.creatorBy;
// return executeInWorkAreaPara;
//}
#endregion
/*
#region ExecuteState
public ExternalResponse OutWorkAreaLj(List outWorkAreaList, LogPara logPara)
{
Log.Detail(logPara, "OutWorkArea接口请求参数-隆基:" + JsonConvert.SerializeObject(outWorkAreaList));
var response = new ExternalResponse();
if (outWorkAreaList == null) return new ExternalResponse { success = false, errMsg = "参数不正确" };
for (var i = 0; i < outWorkAreaList.Count; i++)
{
if (string.IsNullOrEmpty(outWorkAreaList[i].sysName))
{
outWorkAreaList[i].sysName = "AMS";
}
Log.Detail(logPara, "循环OutWorkArea接口请求参数-隆基:准备进入OutWorkAreaLj方法");
var result = OutWorkAreaLj(outWorkAreaList[i], logPara);
if (result.BasisResponse.Success)
{
response.success = true;
response.okList.Add(result.TaskExecuteState.okTask);
}
else
{
response.failList.Add(new TaskExecuteState().Error(i, result.BasisResponse.Message).FailTask);
if (result.RollLocations.Count > 0)
{
foreach (string sLocation in result.RollLocations)
{
BLLCreator.Create().UpdateState(sLocation, Constants.Location_State_Normal, "");
AutoBomLocationEntity locationModel = CreateDAL().GetModel(sLocation);
BLLCreator.Create().AddStateChange(sLocation, "", "正常", "出库请求失败回滚过程中锁定的货位", outWorkAreaList[i].sysName, "", "", locationModel.CN_S_STOCK_CODE, locationModel.CN_S_AREA_CODE, null);
}
}
}
}
var curResult = response.failList.Any() ? response.Error(null, string.Empty, outWorkAreaList) : response.Ok(null, outWorkAreaList);
Log.Detail(logPara, "OutWorkArea接口返回参数:" + curResult);
return curResult;
}
public ExecuteOutWorkAreaPara OutWorkAreaLj(OutWorkAreaEntity outWorkAreaEntity, LogPara logPara)
{
Log.Detail(logPara, "进入隆基OutWorkArea方法");
var executeOutWorkAreaPara = new ExecuteOutWorkAreaPara { OutWorkAreaEntity = outWorkAreaEntity };
try
{
if (!OutWorkAreaVerifyPara(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
if (!OutWorkAreaHandlePara(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
//算法计算货位
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.startBit))
{
OutWorkAreaCalculateLoaction(ref executeOutWorkAreaPara, logPara);//new ExternalOutWorkAreaBLL().CalculateLoaction(executeOutWorkAreaPara);
if (!executeOutWorkAreaPara.BasisResponse.Success) return executeOutWorkAreaPara;
if (!executeOutWorkAreaPara.TransportList.Any())
{
OutWorkAreaOutAss(ref executeOutWorkAreaPara, logPara);
if (!executeOutWorkAreaPara.BasisResponse.Success) return executeOutWorkAreaPara;
}
}
else
{
//创建转运任务
var entity = new TN_WM_TRANSPORT_TASKEntity
{
CN_S_TASK_NO = executeOutWorkAreaPara.OutWorkAreaEntity.taskNo,
CN_S_CIR_OBJ = "托盘",
CN_S_CIR_OBJ_CODE = executeOutWorkAreaPara.OutWorkAreaEntity.trayCode,
CN_S_START_BIT = executeOutWorkAreaPara.OutWorkAreaEntity.startBit,
CN_S_START_AREA = executeOutWorkAreaPara.StartStockAreaEntity.CN_S_AREA_CODE,
CN_S_STATE = Constants.TaskStateList[0],
CN_N_PRIORITY = executeOutWorkAreaPara.OutWorkAreaEntity.priority,
CN_S_END_AREA = executeOutWorkAreaPara.OutWorkAreaEntity.endArea,
CN_S_END_BIT = executeOutWorkAreaPara.OutWorkAreaEntity.endBit,
CN_T_START = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_T_CREATE = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_T_MODIFY = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_S_STOCK_CODE = executeOutWorkAreaPara.OutWorkAreaEntity.startStock,
CN_S_TASK_TYPE = executeOutWorkAreaPara.OutWorkAreaEntity.IsTransport == "Y" ? "转运" : "出库",
CN_S_QTY_INDEX = "1",
CN_C_END_IS_CONTROL_QTY = executeOutWorkAreaPara.EndStockAreaEntity.CN_C_IS_CONTROL_QTY,
CN_S_END_AREA_TYPE = executeOutWorkAreaPara.EndStockAreaEntity.CN_S_STRUCTURE,
CN_C_START_IS_CONTROL_QTY = executeOutWorkAreaPara.StartStockAreaEntity.CN_C_IS_CONTROL_QTY,
CN_S_START_AREA_TYPE = executeOutWorkAreaPara.StartStockAreaEntity.CN_S_STRUCTURE,
CN_S_END_CONTROL_INV = executeOutWorkAreaPara.EndStockAreaEntity.CN_C_IS_INVENTORY,
CN_S_START_CONTROL_INV = executeOutWorkAreaPara.StartStockAreaEntity.CN_C_IS_INVENTORY,
CN_S_REMARK = executeOutWorkAreaPara.OutWorkAreaEntity.remark
};
executeOutWorkAreaPara.TransportList.Add(entity);
}
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.endBit))
{
if (!InWorkAreaOutAss(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
}
UseTransaction(trans =>
{
OutWorkAreaCreateTask(ref executeOutWorkAreaPara, logPara);
OutWorkAreaProcedure(ref executeOutWorkAreaPara, logPara);
if (executeOutWorkAreaPara.OutWorkAreaEntity.needCreateAMSTask == "Y")
{
OperateResult re = new OtherSysApi().SendAmsCreateTaskLJ(executeOutWorkAreaPara.TransportList[0]);
if (!re.Success)
{
throw new Exception("SendAmsCreateTask异常:" + re.Msg);
}
}
});
}
catch (Exception ex)
{
executeOutWorkAreaPara.BasisResponse = BasisResponse.Error("OutWorkAreaLj 方法异常:" + JsonConvert.SerializeObject(ex.Message + ex.StackTrace));
}
return executeOutWorkAreaPara;
}
public override OperateResult CompleteTask(ExecuteStateParaDto executeStatePara, LogPara logPara)
{
// var isControlStockQty = executeStatePara.trayItemMsts.Count > 0;
var isControlStockQty = false;
Log.Detail(logPara, "isControlStockQty: " + isControlStockQty);
#region 组合量表参数
//获取上架量=总量-分配量
//var trayInventory = CreateDAL().GetTrayInventoryQty(executeStatePara.transportTask.CN_S_TRAY_CODE);
var addAreaQty = new List();
var addStockQty = new List();
if (isControlStockQty)
{
foreach (var trayItemMst in executeStatePara.trayItemMsts)
{
foreach (var trayItemDtl in trayItemMst.TrayItemDtlList)
{
addAreaQty.Add(new TN_WM_B_AREA_QTYEntity()
{
CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
CN_S_OWNER = trayItemMst.CN_S_OWNER,
CN_S_PRODUCTION_BATCH = trayItemMst.CN_S_PRODUCTION_BATCH,
CN_S_LOT_NO = trayItemDtl.CN_S_LOT_NO,
CN_F_QUANTITY = Convert.ToDecimal(trayItemDtl.CN_S_SERIAL_NO),//.CN_S_WEIGHT,//重量 Convert.ToDecimal(trayItemMst.CN_F_INQTY),//trayItemMst.CN_F_QUANTITY * trayItemMst.CN_S_WEIGHT,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_F_PLANNED_QTY = trayItemMst.CN_F_INQTY,
CN_S_MODEL = trayItemMst.CN_S_MODEL,
CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT,
CN_S_FIGURE_NO = trayItemDtl.CN_S_EXT1
});
addStockQty.Add(new TN_WM_B_STOCK_QTYEntity()
{
CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
CN_S_OWNER = trayItemMst.CN_S_OWNER,
CN_S_PRODUCTION_BATCH = trayItemMst.CN_S_PRODUCTION_BATCH,
CN_S_LOT_NO = trayItemDtl.CN_S_LOT_NO,
CN_F_QUANTITY = Convert.ToDecimal(trayItemDtl.CN_S_SERIAL_NO),//CN_S_WEIGHT,//trayItemMst.CN_F_QUANTITY * trayItemMst.CN_S_WEIGHT,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_F_PLANNED_QTY = trayItemMst.CN_F_INQTY,
CN_S_MODEL = trayItemMst.CN_S_MODEL,
CN_S_FIGURE_NO = trayItemDtl.CN_S_EXT1,
CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT
});
}
}
Log.Detail(logPara, LogDescribe.Content(addAreaQty));
Log.Detail(logPara, LogDescribe.Content(addStockQty));
}
#endregion
return UseTransaction(trans =>
{
//更新任务状态
CreateDAL>().Update(new
{
CN_S_MODIFY = "",
CN_S_MODIFY_BY = "",
CN_T_END = DateTime.Now,
CN_T_MODIFY = DateTime.Now,
CN_S_STATE = executeStatePara.taskState
}, new { executeStatePara.transportTask.CN_S_TASK_NO }, trans);
Log.Detail(logPara, "更新任务状态-任务号:" + executeStatePara.transportTask.CN_S_TASK_NO + "状态为:" + executeStatePara.taskState);
#region 入库 + 转运
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("入库") || executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
{
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
if (executeStatePara.startTrayLocation != null)
{
//解绑托盘与货位的关系
CreateDAL>().Delete(new
{
executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
}, trans);
Log.Detail(logPara, "解绑任务的托盘和起点货位关联!");
#region 下架记录
CompleteTaskDownHistory(executeStatePara, logPara, trans);
#endregion
}
if (executeStatePara.endTrayLocation == null)
{
//添加托盘货位
if (executeStatePara.transportTask.CN_S_EXT2 != "N")
{
CreateDAL>().Add(trayLocation, trans);
Log.Detail(logPara, "添加托盘货位关联,内容:" + LogDescribe.Content(trayLocation));
}
CompleteTaskUpHistory(executeStatePara, logPara, trans);
//终点
if (executeStatePara.endIsCurrentTask != null && executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "满", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报入库完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
//起点
if (executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y") && executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
{
// BLLCreator.Create().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, Constants.Location_State_Normal, Constants.Location_State_OutLock, trans);
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans);
Log.Detail(logPara, "更新预出库锁定的货位状态为正常,起点货位号:" + executeStatePara.transportTask.CN_S_START_BIT);
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报转运完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 出库
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("出库"))
{
if (executeStatePara.startTrayLocation != null)
{
BLLCreator.Create().Delete(executeStatePara.transportTask.CN_S_TRAY_CODE, executeStatePara.transportTask.CN_S_START_BIT, trans, logPara);
BLLCreator.Create().Delete(" CN_S_TRAY_CODE='" + executeStatePara.transportTask.CN_S_TRAY_CODE + "' ", trans, logPara);
//if (isControlStockQty)
//{
// #region 添加下架记录,降库存
// CompleteTaskDownHistory(executeStatePara, logPara, trans);
// if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y"))
// {
// BLLCreator.Create().ReduceQtyAndAlloc(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, trans, logPara);
// if (!executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
// BLLCreator.Create().ReduceQtyAndAlloc(addStockQty, trans, logPara);
// }
// #endregion
//}
CompleteTaskDownHistory(executeStatePara, logPara, trans);
if (executeStatePara.startIsCurrentTask != null && executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
BLLCreator.Create().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans, logPara);
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报出库完成", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 上架
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("上架"))
{
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
if (executeStatePara.endTrayLocation == null)
{
//添加托盘货位
var addResult = BLLCreator.Create().Add(trayLocation, trans, logPara);
Log.Detail(logPara, "添加托盘货位结果:" + JsonConvert.SerializeObject(addResult));
//CreateDAL>().Add(trayLocation, trans);
if (isControlStockQty)
{
//获取配置是否启用收货区
var strategyValue = BLLCreator.Create().GetStrategy(executeStatePara.transportTask.CN_S_STOCK_CODE, StrategyKey.AreaQtyReceiveGood);
#region 添加上架记录,升库存
CompleteTaskUpHistory(executeStatePara, logPara, trans);
if (string.IsNullOrEmpty(executeStatePara.transportTask.CN_S_END_CONTROL_INV))
{
trans.Rollback();
return;
}
//启用收货区
if (strategyValue.Equals(Constants.Y))
{
Log.Detail(logPara, "启用收货区!");
//降低起始库区(收货区)库存
CreateDAL().ReduceAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
if (executeStatePara.transportTask.CN_S_END_CONTROL_INV.Equals("Y"))
{
//增加结束库区量
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
}
}
else
{
if (executeStatePara.transportTask.CN_S_END_CONTROL_INV.Equals("Y"))
{
//按未入库量增加结束库区量
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
if (!executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
{
//升仓库库存
CreateDAL().AddStockQty(addStockQty, trans);
Log.Detail(logPara, "增加仓库量表完成!");
}
}
}
#endregion
}
if (executeStatePara.endIsCurrentTask != null && executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "满", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,终点货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
////更新终点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT }, trans);
//Log.Detail(logPara, "更新终点货位" + executeStatePara.transportTask.CN_S_END_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报上架完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
if (executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
//解绑托盘与货位的关系
CreateDAL>().Delete(new
{
executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
}, trans);
Log.Detail(logPara, "解绑任务的托盘和起点货位" + executeStatePara.transportTask.CN_S_START_BIT + "关联!");
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans);
Log.Detail(logPara, "更新预出库锁定的货位状态为正常、空,起点货位号:" + executeStatePara.transportTask.CN_S_START_BIT);
////更新起点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT });
//Log.Detail(logPara, "更新起点货位" + executeStatePara.transportTask.CN_S_START_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报上架完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 下架/叫料
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("下架") || executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("叫料"))
{
if (executeStatePara.startTrayLocation != null)
{
BLLCreator.Create().Delete(executeStatePara.transportTask.CN_S_TRAY_CODE, executeStatePara.transportTask.CN_S_START_BIT, trans, logPara);
if (executeStatePara.endStockArea.CN_C_IS_CONTROL_QTY.Equals("N"))
{
BLLCreator.Create().Delete(" CN_S_TRAY_CODE='" + executeStatePara.transportTask.CN_S_TRAY_CODE + "' ", trans, logPara);
}
if (isControlStockQty)
{
#region 添加下架记录,降库存
CompleteTaskDownHistory(executeStatePara, logPara, trans);
//获取配置是否启用收货区
var strategyValue = BLLCreator.Create().GetStrategy(executeStatePara.transportTask.CN_S_STOCK_CODE, StrategyKey.AreaQtyDeliverGood);
if (strategyValue.Equals(Constants.Y))
{
if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y"))
{
CreateDAL().ReduceAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
}
//增加终点库区(收货区)库存
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
}
else
{
if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y"))
{
BLLCreator.Create().ReduceQtyAndAlloc(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, trans, logPara);
if (!executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
BLLCreator.Create().ReduceQtyAndAlloc(addStockQty, trans, logPara);
}
}
#endregion
}
if (executeStatePara.startIsCurrentTask != null && executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
BLLCreator.Create().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans, logPara);
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报下架完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
if (executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
//添加托盘货位
CreateDAL>().Add(trayLocation, trans);
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "满", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,结束货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
////更新终点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT });
//Log.Detail(logPara, "更新终点货位" + executeStatePara.transportTask.CN_S_END_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报下架完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 空托入(上架)
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("空托入"))
{
Log.Detail(logPara, "开始执行空托入!");
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
Log.Detail(logPara, "endTrayLocation: " + JsonConvert.SerializeObject(executeStatePara.endTrayLocation));
if (executeStatePara.endTrayLocation == null)
{
//添加托盘货位
CreateDAL>().Add(trayLocation, trans);
if (isControlStockQty)
{
//获取配置是否启用收货区
var strategyValue = BLLCreator.Create().GetStrategy(executeStatePara.transportTask.CN_S_STOCK_CODE, StrategyKey.AreaQtyReceiveGood);
#region 添加上架记录,升库存
CompleteTaskUpHistory(executeStatePara, logPara, trans);
if (string.IsNullOrEmpty(executeStatePara.transportTask.CN_S_END_CONTROL_INV))
{
trans.Rollback();
return;
}
//启用收货区
if (strategyValue.Equals(Constants.Y))
{
Log.Detail(logPara, "启用收货区!");
//降低起始库区(收货区)库存
CreateDAL().ReduceAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
if (executeStatePara.transportTask.CN_S_END_CONTROL_INV.Equals("Y"))
{
//增加结束库区量
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
}
}
else
{
if (executeStatePara.transportTask.CN_S_END_CONTROL_INV.Equals("Y"))
{
//按未入库量增加结束库区量
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
if (!executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
{
//升仓库库存
CreateDAL().AddStockQty(addStockQty, trans);
Log.Detail(logPara, "增加仓库量表完成!");
}
}
}
#endregion
}
if (executeStatePara.endIsCurrentTask != null && executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "满", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,终点货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
////更新终点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT });
//Log.Detail(logPara, "更新终点货位" + executeStatePara.transportTask.CN_S_END_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报上架完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
if (executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
//解绑托盘与货位的关系
CreateDAL>().Delete(new
{
executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
}, trans);
Log.Detail(logPara, "解绑任务的托盘和起点货位关联!");
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans);
Log.Detail(logPara, "更新预出库锁定的货位状态为正常、空,起点货位号:" + executeStatePara.transportTask.CN_S_START_BIT);
////更新起点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT });
//Log.Detail(logPara, "更新起点货位" + executeStatePara.transportTask.CN_S_START_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报上架完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 空托出(下架)
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("空托出"))
{
Log.Detail(logPara, "开始执行空托出!");
Log.Detail(logPara, "startTrayLocation: " + JsonConvert.SerializeObject(executeStatePara.startTrayLocation));
if (executeStatePara.startTrayLocation != null)
{
//解绑托盘与货位的关系
CreateDAL>().Delete(new
{
executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
}, trans);
Log.Detail(logPara, "解绑任务的托盘和起点货位关联!");
////删除托盘产品关联
//CreateDAL().Delete(" CN_S_TRAY_CODE='" + executeStatePara.transportTask.CN_S_TRAY_CODE + "' ");
//Log.Detail(logPara, "删除当前任务的托盘物料关联!");
if (isControlStockQty)
{
#region 添加下架记录,降库存
CompleteTaskDownHistory(executeStatePara, logPara, trans);
//获取配置是否启用收货区
var strategyValue = BLLCreator.Create().GetStrategy(executeStatePara.transportTask.CN_S_STOCK_CODE, StrategyKey.AreaQtyDeliverGood);
if (strategyValue.Equals(Constants.Y))
{
if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y"))
{
CreateDAL().ReduceAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
}
//增加终点库区(收货区)库存
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
}
else
{
if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y"))
{
CreateDAL().ReduceAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
if (!executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("转运"))
{
//降低仓库库存
CreateDAL().ReduceStockQty(addStockQty, trans);
Log.Detail(logPara, "降低仓库量表完成!");
}
}
}
#endregion
}
if (executeStatePara.startIsCurrentTask != null && executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans);
Log.Detail(logPara, "更新预出库锁定的货位状态为正常、空,起始货位号:" + executeStatePara.transportTask.CN_S_START_BIT);
////更新起点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT });
//Log.Detail(logPara, "更新起点货位" + executeStatePara.transportTask.CN_S_START_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报下架完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
if (executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
////添加托盘货位
//CreateDAL>().Add(trayLocation, trans);
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "空", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,结束货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
////更新终点货位的任务号
//CreateDAL>().Update(new { CN_S_TASK_NO = "" }, new { CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT });
//Log.Detail(logPara, "更新终点货位" + executeStatePara.transportTask.CN_S_END_BIT + "的绑定任务号为空!");
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报下架完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
#region 移库
if (executeStatePara.transportTask.CN_S_TASK_TYPE.Equals("移库"))
{
var trayLocation = new TN_WM_B_TRAY_LOCATIONEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_N_INDEX = 1,
CN_S_CREATOR = "",
CN_S_CREATOR_BY = "",
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_END_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_S_TRAY_CODE = executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_T_CREATE = DateTime.Now
};
if (executeStatePara.startTrayLocation != null)
{
//解绑托盘与货位的关系
CreateDAL>().Delete(new
{
executeStatePara.transportTask.CN_S_TRAY_CODE,
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
}, trans);
Log.Detail(logPara, "解绑任务的托盘和起点货位关联!");
}
if (executeStatePara.endTrayLocation == null)
{
//添加托盘货位
CreateDAL>().Add(trayLocation, trans);
Log.Detail(logPara, "添加托盘货位关联,内容:" + LogDescribe.Content(trayLocation));
if (isControlStockQty)
{
#region 下架记录
CompleteTaskDownHistory(executeStatePara, logPara, trans);
#endregion
#region 上架记录
CompleteTaskUpHistory(executeStatePara, logPara, trans);
if (string.IsNullOrEmpty(executeStatePara.transportTask.CN_S_END_CONTROL_INV))
{
Log.Detail(logPara, "终点库区" + executeStatePara.transportTask.CN_S_END_AREA + "不管控库存!executeStatePara.transportTask.CN_S_END_CONTROL_INV:" + executeStatePara.transportTask.CN_S_END_CONTROL_INV);
trans.Rollback();
return;
}
#endregion
#region 库存
if (executeStatePara.transportTask.CN_S_START_CONTROL_INV.Equals("Y")) //降低起点库存
{
CreateDAL().ReduceAreaQtyAndAllocQty(addAreaQty, executeStatePara.transportTask.CN_S_START_AREA, logPara, trans);
}
if (executeStatePara.transportTask.CN_S_END_CONTROL_INV.Equals("Y")) //增加终点库存
{
//按未入库量增加结束库区量
CreateDAL().AddAreaQty(addAreaQty, executeStatePara.transportTask.CN_S_END_AREA, logPara, trans);
}
#endregion
}
//终点
if (executeStatePara.endIsCurrentTask != null && executeStatePara.transportTask.CN_C_END_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_END_BIT, "正常", "满", "预入库锁定", trans);
Log.Detail(logPara, "更新预入库锁定的货位状态为正常、满,货位号:" + executeStatePara.transportTask.CN_S_END_BIT);
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_END_BIT, "预入库锁定", "正常", "状态回报入库完成-终点", "", "", "", executeStatePara.endStockArea.CN_S_STOCK_CODE, executeStatePara.endStockArea.CN_S_AREA_CODE, trans);
}
//起点
if (executeStatePara.transportTask.CN_C_START_IS_CONTROL_QTY.Equals("Y"))
{
CreateDAL().UpdateState(executeStatePara.transportTask.CN_S_START_BIT, "正常", "空", "预出库锁定", trans);
Log.Detail(logPara, "更新预出库锁定的货位状态为正常、空,起点货位号:" + executeStatePara.transportTask.CN_S_START_BIT);
//货位状态变化
BLLCreator.Create().AddStateChange(executeStatePara.transportTask.CN_S_START_BIT, "预出库锁定", "正常", "状态回报转运完成-起点", "", "", "", executeStatePara.startStockArea.CN_S_STOCK_CODE, executeStatePara.startStockArea.CN_S_AREA_CODE, trans);
}
}
}
#endregion
});
}
public override void CompleteTaskDownHistory(ExecuteStateParaDto executeStatePara, LogPara logPara, IDbTransaction trans)
{
var downHis = new List();
foreach (var trayItemMst in executeStatePara.trayItemMsts)
{
downHis.Add(new TN_WM_DOWN_HISTORYEntity
{
CN_GUID = Guid.NewGuid().ToString(),
CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT,
CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
CN_S_TRAY_CODE = trayItemMst.CN_S_TRAY_CODE,
CN_S_TRAY_GRID = trayItemMst.CN_S_TRAY_GRID,
CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
CN_S_PRODUCTION_BATCH = trayItemMst.CN_S_LOT_NO,
CN_F_QUANTITY = trayItemMst.CN_F_QUANTITY,//CN_S_WEIGHT,//.CN_F_QUANTITY,
CN_S_MODEL = trayItemMst.CN_S_MODEL,
CN_S_STOCK_AREA = executeStatePara.transportTask.CN_S_START_AREA,
CN_S_STOCK_CODE = executeStatePara.transportTask.CN_S_STOCK_CODE,
CN_T_CREATE = DateTime.Now,
CN_T_MODIFY = DateTime.Now,
CN_S_OWNER = "",
CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT,
CN_S_CREATOR = executeStatePara.transportTask.CN_S_CREATOR,
CN_S_CREATOR_BY = executeStatePara.transportTask.CN_S_CREATOR_BY,
CN_S_MODIFY = "",
CN_S_MODIFY_BY = "",
CN_S_OP_FROM = "任务完成-" + executeStatePara.transportTask.CN_S_TASK_TYPE,
CN_S_EXT1 = trayItemMst.CN_S_UNIQUE_CODE,
CN_S_EXT2 = executeStatePara.transportTask.CN_S_EXT1,
CN_S_LOT_NO = trayItemMst.CN_S_LOT_NO,
CN_S_FIGURE_NO = trayItemMst.CN_S_FIGURE_NO
});
}
//下架记录
if (downHis.Any())
{
CreateDAL>().AddRange(downHis, trans);
Log.Detail(logPara, "添加下架记录,内容:" + LogDescribe.Content(downHis));
}
}
#endregion
public override ExecuteOutWorkAreaPara OutWorkArea(OutWorkAreaEntity outWorkAreaEntity, LogPara logPara)
{
var executeOutWorkAreaPara = new ExecuteOutWorkAreaPara { OutWorkAreaEntity = outWorkAreaEntity };
try
{
if (!OutWorkAreaVerifyPara(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
if (!OutWorkAreaHandlePara(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
//算法计算货位
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.startBit))
{
OutWorkAreaCalculateLoaction(ref executeOutWorkAreaPara, logPara);
if (!executeOutWorkAreaPara.BasisResponse.Success) return executeOutWorkAreaPara;
if (!executeOutWorkAreaPara.TransportList.Any())
{
OutWorkAreaOutAss(ref executeOutWorkAreaPara, logPara);
if (!executeOutWorkAreaPara.BasisResponse.Success) return executeOutWorkAreaPara;
}
}
else
{
//创建转运任务
var entity = new TN_WM_TRANSPORT_TASKEntity
{
CN_S_TASK_NO = executeOutWorkAreaPara.OutWorkAreaEntity.taskNo,
CN_S_CIR_OBJ = "托盘",
CN_S_CIR_OBJ_CODE = executeOutWorkAreaPara.OutWorkAreaEntity.trayCode,
CN_S_START_BIT = executeOutWorkAreaPara.OutWorkAreaEntity.startBit,
CN_S_START_AREA = executeOutWorkAreaPara.StartStockAreaEntity.CN_S_AREA_CODE,
CN_S_STATE = Constants.TaskStateList[0],
CN_N_PRIORITY = executeOutWorkAreaPara.OutWorkAreaEntity.priority,
CN_S_END_AREA = executeOutWorkAreaPara.OutWorkAreaEntity.endArea,
CN_S_END_BIT = executeOutWorkAreaPara.OutWorkAreaEntity.endBit,
CN_T_START = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_T_CREATE = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_T_MODIFY = DateTime.Now.ToString(CultureInfo.InvariantCulture),
CN_S_STOCK_CODE = executeOutWorkAreaPara.OutWorkAreaEntity.startStock,
CN_S_TASK_TYPE = executeOutWorkAreaPara.OutWorkAreaEntity.IsTransport == "Y" ? "转运" : "出库",
CN_S_QTY_INDEX = "1",
CN_C_END_IS_CONTROL_QTY = executeOutWorkAreaPara.EndStockAreaEntity.CN_C_IS_CONTROL_QTY,
CN_S_END_AREA_TYPE = executeOutWorkAreaPara.EndStockAreaEntity.CN_S_STRUCTURE,
CN_C_START_IS_CONTROL_QTY = executeOutWorkAreaPara.StartStockAreaEntity.CN_C_IS_CONTROL_QTY,
CN_S_START_AREA_TYPE = executeOutWorkAreaPara.StartStockAreaEntity.CN_S_STRUCTURE,
CN_S_END_CONTROL_INV = executeOutWorkAreaPara.EndStockAreaEntity.CN_C_IS_INVENTORY,
CN_S_START_CONTROL_INV = executeOutWorkAreaPara.StartStockAreaEntity.CN_C_IS_INVENTORY
};
executeOutWorkAreaPara.TransportList.Add(entity);
}
if (string.IsNullOrEmpty(executeOutWorkAreaPara.OutWorkAreaEntity.endBit))
{
if (!InWorkAreaOutAss(ref executeOutWorkAreaPara, logPara).BasisResponse.Success) return executeOutWorkAreaPara;
}
UseTransaction(trans =>
{
OutWorkAreaCreateTask(ref executeOutWorkAreaPara, logPara);
OutWorkAreaProcedure(ref executeOutWorkAreaPara, logPara);
if (executeOutWorkAreaPara.OutWorkAreaEntity.needCreateAMSTask == "Y")
{
OperateResult re = new OtherSysApi().SendAmsCreateTaskLJ(executeOutWorkAreaPara.TransportList[0]);
if (!re.Success)
{
throw new Exception("SendAmsCreateTask异常:" + re.Msg);
}
}
});
}
catch (Exception ex)
{
executeOutWorkAreaPara.BasisResponse = BasisResponse.Error("OutWorkArea 方法异常:" + JsonConvert.SerializeObject(ex.Message + ex.StackTrace));
}
return executeOutWorkAreaPara;
}
*/
}
}