using iWareCommon.Common.Globle;
|
using iWareCommon.Utils;
|
using iWareModel;
|
using iWareSql.DataAccess;
|
using iWareSql.DBModel;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using XiGang.Core.Model;
|
|
namespace XiGang_iWareTestForm.iWareTest.DialogForm
|
{
|
public partial class TestBatchForm : Form
|
{
|
delegate void Delegate_SetPostResult2(string content);
|
public TestBatchForm()
|
{
|
InitializeComponent();
|
}
|
|
private void button5_Click(object sender, EventArgs e)
|
{
|
string tb_SrmNo = this.tb_PlaceNo.Text.Trim();
|
//按照某个库位将发动机物料改为托盘
|
//先删除
|
ClearPlace(tb_SrmNo);
|
//再新增托盘
|
do_button1_Click(tb_SrmNo);
|
}
|
|
/// <summary>
|
/// 新建入库任务
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void button1_Click(object sender, EventArgs e)
|
{
|
//try
|
//{
|
// ListItem selProFlag = null;
|
// var itemType = ComboBoxHelper.GetComboxSelectValue(this.cmbItemType, ref selProFlag);
|
|
|
|
// if (string.IsNullOrEmpty(tb_SrmNo))
|
// {
|
// ShowResult("库位号不能为空");
|
// return;
|
// }
|
|
// var remark = "";
|
// int qty = 1;
|
// if (selProFlag.Text == "托盘")
|
// {
|
// qty = Convert.ToInt32(tb_SalverCount.Text);
|
// remark = "人工手动增加托盘库存";
|
// }
|
|
|
// Base_Station toPlace = null;
|
// using (DbModel context = new DbModel())
|
// {
|
// toPlace = context.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo).FirstOrDefault();
|
// if (toPlace == null)
|
// {
|
// ShowResult(tb_SrmNo + "库位不存在");
|
// return;
|
// }
|
// //看看有没有库存
|
// var abc = context.V_AllStore.Where(x => x.SrmStationCode == toPlace.SrmStationCode).FirstOrDefault();
|
// if (abc != null)
|
// {
|
// ShowResult(tb_SrmNo + "已经有库存了");
|
// return;
|
// }
|
|
// if (selProFlag.Text == "托盘")
|
// {
|
// Base_Material newMaterial = null;
|
// Base_Salver salver = null;
|
// StoreHandler.AddStoreForEmptySalverTransfer(context, remark, toPlace, qty, "人工手动", ref salver, ref newMaterial);
|
|
|
// SaveLog(MaterialTypeEnum.托盘, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, "", "");
|
|
// context.SaveChanges();//提交数据
|
// }
|
// else
|
// {
|
// var SerialNumber = this.tb_SerialNumber.Text;
|
// var OrderNo = this.tb_OrderNo.Text;
|
// var SalverCode = this.tb_SalverCode.Text;
|
// if (string.IsNullOrEmpty(SerialNumber))
|
// {
|
// ShowResult(tb_SrmNo + "序列号不能为空");
|
// return;
|
// }
|
// if (string.IsNullOrEmpty(OrderNo))
|
// {
|
// ShowResult(tb_SrmNo + "订货号不能为空");
|
// return;
|
// }
|
// if (string.IsNullOrEmpty(SalverCode))
|
// {
|
// ShowResult(tb_SrmNo + "托盘号不能为空");
|
// return;
|
// }
|
// abc = context.V_AllStore.Where(x => x.SerialNumber == SerialNumber).FirstOrDefault();
|
// if (abc != null)
|
// {
|
// ShowResult("序列号" + SerialNumber + "已经有库存了");
|
// return;
|
// }
|
// abc = context.V_AllStore.Where(x => x.SalverCode == SalverCode).FirstOrDefault();
|
// if (abc != null)
|
// {
|
// ShowResult("托盘号" + SalverCode + "已经有库存了");
|
// return;
|
// }
|
|
// //绑定托盘和站点的关系
|
// //新建物料
|
// Base_Material newMaterial = MaterialHandler.CreateCargoMaterial(context, "入库时,新建物料", SerialNumber, OrderNo);
|
// //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
|
// var errMsg = "";
|
// Base_Salver salver = SalverHandler.GetSalveByCodeForInTask(context, SalverCode, out errMsg);
|
// if (!string.IsNullOrEmpty(errMsg))
|
// {
|
// ShowResult(tb_SrmNo + "errMsg");
|
// return;
|
// }
|
// //绑定托盘和物料的关系
|
// Salver_Material_Handler.CreateCvIRelation(context, "人工手动", salver, newMaterial, remark);
|
// //绑定托盘和站点的关系
|
// Salver_Station_Handler.CreateCvPRelation(context, "人工手动", salver, toPlace, Salver_V_Station_StateEnum.入库绑定, remark);
|
|
// SaveLog(MaterialTypeEnum.一般物料, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, SerialNumber, OrderNo);
|
|
// context.SaveChanges();//提交数据
|
// }
|
// ShowResult(tb_SrmNo + "保存成功");
|
// }
|
//}
|
//catch (Exception ex)
|
//{
|
// ShowResult(tb_SrmNo + "保存失败," + ex.Message);
|
//}
|
}
|
|
private void do_button1_Click(string tb_SrmNo)
|
{
|
try
|
{
|
ListItem selProFlag = null;
|
var itemType = ComboBoxHelper.GetComboxSelectValue(this.cmbItemType, ref selProFlag);
|
|
|
|
if (string.IsNullOrEmpty(tb_SrmNo))
|
{
|
ShowResult("库位号不能为空");
|
return;
|
}
|
|
var remark = "";
|
int qty = 1;
|
if (selProFlag.Text == "托盘")
|
{
|
qty = Convert.ToInt32(tb_SalverCount.Text);
|
remark = "人工手动增加托盘库存";
|
}
|
|
|
Base_Station toPlace = null;
|
using (DbModel context = new DbModel())
|
{
|
toPlace = context.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo).FirstOrDefault();
|
if (toPlace == null)
|
{
|
ShowResult(tb_SrmNo + "库位不存在");
|
return;
|
}
|
//看看有没有库存
|
var abc = context.V_AllStore.Where(x => x.SrmStationCode == toPlace.SrmStationCode).FirstOrDefault();
|
if (abc != null)
|
{
|
ShowResult(tb_SrmNo + "已经有库存了");
|
return;
|
}
|
|
if (selProFlag.Text == "托盘")
|
{
|
Base_Material newMaterial = null;
|
Base_Salver salver = null;
|
StoreHandler.AddStoreForEmptySalverTransfer(context, remark, toPlace, qty, "人工手动", ref salver, ref newMaterial);
|
|
|
|
|
context.SaveChanges();//提交数据
|
}
|
else
|
{
|
var SerialNumber = this.tb_SerialNumber.Text;
|
var OrderNo = this.tb_OrderNo.Text;
|
var SalverCode = this.tb_SalverCode.Text;
|
if (string.IsNullOrEmpty(SerialNumber))
|
{
|
ShowResult(tb_SrmNo + "序列号不能为空");
|
return;
|
}
|
if (string.IsNullOrEmpty(OrderNo))
|
{
|
ShowResult(tb_SrmNo + "订货号不能为空");
|
return;
|
}
|
if (string.IsNullOrEmpty(SalverCode))
|
{
|
ShowResult(tb_SrmNo + "托盘号不能为空");
|
return;
|
}
|
abc = context.V_AllStore.Where(x => x.SerialNumber == SerialNumber).FirstOrDefault();
|
if (abc != null)
|
{
|
ShowResult("序列号" + SerialNumber + "已经有库存了");
|
return;
|
}
|
abc = context.V_AllStore.Where(x => x.SalverCode == SalverCode).FirstOrDefault();
|
if (abc != null)
|
{
|
ShowResult("托盘号" + SalverCode + "已经有库存了");
|
return;
|
}
|
|
//绑定托盘和站点的关系
|
//新建物料
|
Base_Material newMaterial = null;// MaterialHandler.CreateCargoMaterial(context, "入库时,新建物料", SerialNumber, OrderNo);
|
//判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
|
var errMsg = "";
|
Base_Salver salver = SalverHandler.GetSalveByCodeForInTask(context, SalverCode, out errMsg);
|
if (!string.IsNullOrEmpty(errMsg))
|
{
|
ShowResult(tb_SrmNo + "errMsg");
|
return;
|
}
|
//绑定托盘和物料的关系
|
Salver_Material_Handler.CreateCvIRelation(context, "人工手动", salver, newMaterial, remark);
|
//绑定托盘和站点的关系
|
Salver_Station_Handler.CreateCvPRelation(context, "人工手动", salver, toPlace, Salver_V_Station_StateEnum.入库绑定, remark);
|
|
|
|
context.SaveChanges();//提交数据
|
}
|
ShowResult(tb_SrmNo + "保存库存成功");
|
Log4NetHelper.WriteInfoLog(LogType.SS7, tb_SrmNo + "保存库存成功");
|
}
|
}
|
catch (Exception ex)
|
{
|
ShowResult(tb_SrmNo + "保存失败," + ex.Message);
|
Log4NetHelper.WriteErrorLog(LogType.SS7, tb_SrmNo + "保存失败," + ex.Message);
|
}
|
}
|
|
private void LoadItemType()
|
{
|
List<ListItem> itemList = new List<ListItem>();
|
itemList.Add(new ListItem()
|
{
|
Text = "发送机",
|
Value = "1"
|
});
|
itemList.Add(new ListItem()
|
{
|
Text = "托盘",
|
Value = "2"
|
});
|
foreach (var item in itemList)
|
{
|
this.cmbItemType.Items.Add(item);
|
}
|
|
cmbItemType.SelectedIndex = 1;
|
}
|
|
/// <summary>
|
/// 显示请求结果
|
/// </summary>
|
/// <param name="content"></param>
|
private void ShowResult(string content)
|
{
|
|
if (this.tb_Log.InvokeRequired)
|
{
|
Delegate_SetPostResult2 delegate_SetPostResult = new Delegate_SetPostResult2(ShowResult);
|
this.Invoke(delegate_SetPostResult, new object[] { content });
|
}
|
else
|
{
|
//content += "\r\n";
|
this.tb_Log.Text = StringHelper.GetLog(content) + this.tb_Log.Text;
|
}
|
}
|
|
private void button2_Click(object sender, EventArgs e)
|
{
|
//ClearPlace();
|
}
|
|
private void ClearPlace(string tb_SrmNo)
|
{
|
var msg = "清除";
|
try
|
{
|
|
if (string.IsNullOrEmpty(tb_SrmNo))
|
{
|
ShowResult("库位号不能为空");
|
return;
|
}
|
|
Base_Station place = null;
|
using (DbModel edm = new DbModel())
|
{
|
place = edm.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo || x.RgvStationCode == tb_SrmNo).FirstOrDefault();
|
//获取库存的信息
|
var store = edm.V_AllStore.Where(x => x.StationId == place.Id).FirstOrDefault();
|
if (store == null)
|
{
|
ShowResult("该库位上没有库存!");
|
return;
|
}
|
|
StoreHandler.ClearStockByPlaceId(edm, place, "人工手动清除");
|
|
if (store.IsSrmStation)
|
{//如果是立体库库存,则在增加mian表
|
#region 增加Main表
|
|
//增加Main表和Part表数据
|
Task_Main mainTask = new Task_Main();
|
mainTask.IsVirtual = false;//非虚拟入库
|
MainTaskTypeEnum _taskType = default(MainTaskTypeEnum);
|
DeviceTaskTypeEnum _DeviceTaskTypeEnum = default(DeviceTaskTypeEnum);
|
string handlerType = "";
|
MaterialTypeEnum _MaterialType = (MaterialTypeEnum)Enum.Parse(typeof(MaterialTypeEnum), store.MaterialType.ToString());
|
switch (_MaterialType)
|
{
|
case MaterialTypeEnum.托盘:
|
handlerType = "手动清除托盘库存";
|
_DeviceTaskTypeEnum = DeviceTaskTypeEnum.出库;
|
mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("OUT_SD_TP");
|
mainTask.TaskName = "手动清除托盘库存";
|
mainTask.InOutFlag = (int)MainInOutFlagEnum.出库;
|
mainTask.InOutFlagName = MainInOutFlagEnum.出库.ToString();
|
_taskType = MainTaskTypeEnum.手动出库;
|
mainTask.TaskType = Convert.ToInt32(_taskType);
|
mainTask.TaskTypeName = _taskType.ToString();
|
break;
|
case MaterialTypeEnum.一般物料:
|
handlerType = "手动清除发动机库存";
|
_DeviceTaskTypeEnum = DeviceTaskTypeEnum.出库;
|
|
mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("OUT_SD");
|
mainTask.TaskName = "手动清除发动机库存";
|
mainTask.InOutFlag = (int)MainInOutFlagEnum.出库;
|
mainTask.InOutFlagName = MainInOutFlagEnum.出库.ToString();
|
_taskType = MainTaskTypeEnum.手动出库;
|
mainTask.TaskType = Convert.ToInt32(_taskType);
|
mainTask.TaskTypeName = _taskType.ToString();
|
|
mainTask.SerialNumber = store.SerialNumber;
|
mainTask.OrderNo = store.OrderNo;
|
|
|
break;
|
}
|
|
mainTask.MaterialType = (int)_MaterialType;
|
mainTask.MaterialTypeName = _MaterialType.ToString();
|
|
|
var _taskState = MainTaskStatusEnum.已完成;
|
mainTask.TaskState = Convert.ToInt32(_taskState);
|
mainTask.TaskStateName = _taskState.ToString();
|
mainTask.IsAllowSimulateExecute = true;
|
mainTask.OperationRemark = handlerType;
|
mainTask.Qty = store.Qty;
|
mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
|
mainTask.CreateBy = mainTask.ModifyBy = SysGloble.WCSSystem;
|
|
mainTask.MaterialId = store.MaterialId;
|
|
mainTask.FinishTime = DateTime.Now;
|
|
mainTask.SourcePlace = store.StationId;
|
mainTask.RealSourcePlace = store.SrmStationCode;
|
|
mainTask.ToPlace = 0;
|
mainTask.RealToPlace = "";
|
//记录区域 [EditBy shaocx,2022-05-02]
|
EDevice device = BusinessHelper.GetSrmDeviceByPlaceNo(store.SrmStationCode);
|
mainTask.Area = ((int)device).ToString();
|
|
edm.Task_Main.Add(mainTask);
|
|
|
#endregion
|
|
#region 增加Part表
|
EDeviceType deviceType = EDeviceType.堆垛机;
|
var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
|
Task_Part partTask = new Task_Part()
|
{
|
Id = Guid.NewGuid().ToString(),
|
|
InOutFlag = mainTask.InOutFlag,
|
InOutFlagName = mainTask.InOutFlagName,
|
|
DeviceType = (int)deviceType,
|
DeviceTypeName = deviceType.ToString(),
|
DeviceId = Convert.ToInt16(device),
|
DeviceName = Convert.ToString(device),
|
|
IsAllowSimulateExecute = true,
|
|
TaskSequence = 1,
|
MainTaskSequence = mainTask.TaskSequence,//增加主任务优先级
|
TaskDescribe = handlerType,
|
OperationRemark = handlerType,
|
MainTaskId = mainTask.Id,
|
MainTaskNo = mainTask.TaskNo,
|
MaterialId = mainTask.MaterialId,
|
Qty = mainTask.Qty,//增加数量 【EditBy shaocx,2022-05-01】
|
|
//增加 订货号和序列号的赋值 [Editby shaocx,2022-04-21]
|
SerialNumber = mainTask.SerialNumber,
|
OrderNo = mainTask.OrderNo,
|
|
//ToNumber = toNumber,
|
//TaskGuid = taskGuid,
|
//MatID = MatID,
|
//MatName = MatName,
|
//Remark = "手动入库创建设备任务" + description,
|
//Creator = "手动入库创建设备任务" + "," + Dns.GetHostName(),
|
//UpdateUser = "手动入库创建设备任务" + "," + Dns.GetHostName(),
|
CreateTime = DateTime.Now,
|
ModifyTime = DateTime.Now,
|
|
PlcTaskId = plcTaskNo,
|
//ContainerId = ctn.ContainerId,
|
SalverId = store.SalverId,
|
SalverCode = store.SalverCode,
|
|
SourcePlace = store.StationId,
|
ToPlace = 0,
|
RealSourcePlace = store.SrmStationCode,
|
RealToPlace = store.SrmStationCode,
|
|
TaskName = string.Format("(来源:id-{0} no-{1},目标:id-{2} no-{3})", store.StationId, store.SrmStationCode,
|
0, ""),
|
|
IsReleased = true,
|
// IsCurrentTask = 0,
|
IsFinished = true,
|
//IsLastTask = 0,
|
//Void = 0,
|
TaskState = (int)DeviceTaskStatusEnum.已完成,
|
TaskStateName = DeviceTaskStatusEnum.已完成.ToString(),
|
|
TaskType = (int)_DeviceTaskTypeEnum,
|
TaskTypeName = _DeviceTaskTypeEnum.ToString(),
|
|
MaterialType = (int)_MaterialType,
|
MaterialTypeName = _MaterialType.ToString(),
|
|
IssueTime = DateTime.Now,
|
FinishTime = DateTime.Now
|
|
};
|
edm.Task_Part.Add(partTask);
|
|
#endregion
|
}
|
|
|
|
//保存人工处理日志 [EditBy shaocx,2022-05-01]
|
Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
|
{
|
MainTaskNo = "",
|
HandlerType = "库存删除",
|
PartTaskId = "",
|
PlcTaskId = "",
|
RealSourcePlace = tb_SrmNo,
|
RealToPlace = "",
|
SalverCode = store.SalverCode,
|
SerialNumber = store.SerialNumber,
|
OrderNo = store.OrderNo,
|
TaskTypeName = "",
|
Qty = store.Qty,
|
|
// ManualHandlerRemark = _AllowSimulateExecute_Rmark
|
|
};
|
PersonHandlerRecordHandler.SavePersonHandlerRecord(edm, record);
|
|
edm.SaveChanges();
|
|
ShowResult(msg + tb_SrmNo + "库存成功");
|
|
Log4NetHelper.WriteInfoLog(LogType.SS7, msg + tb_SrmNo + "库存成功");
|
}
|
}
|
catch (Exception ex)
|
{
|
ShowResult(msg + "库存失败," + ex.Message);
|
|
Log4NetHelper.WriteErrorLog(LogType.SS7, msg + tb_SrmNo + "库存失败," + ex.Message);
|
}
|
}
|
|
|
|
private void TestBatchForm_Load(object sender, EventArgs e)
|
{
|
LoadItemType();
|
this.tb_SalverCount.Text = "1";
|
}
|
|
private void button3_Click(object sender, EventArgs e)
|
{
|
//批量将发动机物料改为托盘
|
//获取库存的列表
|
int MaterialType = (int)MaterialTypeEnum.一般物料;
|
List<V_Store> salverList = null;
|
using (DbModel edm = new DbModel())
|
{
|
salverList = edm.V_Store.Where(x => x.MaterialType == MaterialType).ToList();
|
//378
|
//去掉这些有发动机的库位
|
List<string> strList = GetString();
|
salverList = salverList.Where(x => !strList.Contains(x.SrmStationCode)).ToList();
|
//16个,还有362
|
|
////还要排除 第4库区,第1排,第一层的所有库位
|
|
//salverList = salverList.Where(x => !(x.Area == "4" && x.Layer == 1 && x.Row == 1)).ToList();
|
////还有350,减去了 12个
|
|
}
|
|
////更新数据
|
foreach (var item in salverList)
|
{
|
var tb_SrmNo = item.SrmStationCode;
|
//按照某个库位将发动机物料改为托盘
|
//先删除
|
ClearPlace(tb_SrmNo);
|
//再新增托盘
|
do_button1_Click(tb_SrmNo);
|
Thread.Sleep(1000);
|
}
|
|
}
|
|
private List<string> GetString()
|
{
|
List<String> list = new List<string>();
|
list.Add("2-01-10-02".Trim());
|
list.Add("1-01-04-01".Trim());
|
|
list.Add("1-01-06-04".Trim());
|
|
return list;
|
}
|
}
|
}
|