添加移库逻辑

master
2 years ago
parent 027b0f062d
commit be5d2f64fd

@ -166,7 +166,7 @@ namespace Khd.Core.Application
{ {
var wcsTask = _dbContext.WcsTask var wcsTask = _dbContext.WcsTask
.Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid)) .Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid))
.OrderByDescending(t=>t.createTime) .OrderByDescending(t => t.createTime)
.FirstOrDefault(); .FirstOrDefault();
if (wcsTask != null) if (wcsTask != null)
{ {

@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Khd.Core.Library namespace Khd.Core.Library
{ {

@ -45,15 +45,16 @@ namespace Khd.Core.Plc
return null; return null;
} }
string res = Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim(); string res = Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Replace("\\u", "").Trim();
if (res.Contains("JYHB")) if (res.Contains("JYHB"))
{ {
return res[res.IndexOf('J')..].Substring(0,12); return res[res.IndexOf('J')..].Substring(0, 12);
} }
else if(res.Contains('C')) else if (res.Contains('C'))
{ {
return res[res.IndexOf('C')..]; return res[res.IndexOf('C')..];
}else }
else
{ {
return ""; return "";
} }

@ -64,7 +64,7 @@ namespace Khd.Core.Wcs.Global
public static List<BasePlc> basePlcs = new List<BasePlc>(); public static List<BasePlc> basePlcs = new List<BasePlc>();
public static List<PlcConfig> PlcConfigs { get; set; } public static List<PlcConfig> PlcConfigs { get; set; }
public static int DeleteLogDay { get; internal set; } public static int DeleteLogDay { get; internal set; }
public static List<string> BigContainerCodes = new List<string>(){ "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004" }; public static List<string> BigContainerCodes = new List<string>() { "JYHB01020001", "JYHB01020002", "JYHB01020003", "JYHB01020004" };
public static Dictionary<int, Dictionary<string, PlcPoint>> PlcPoints = new Dictionary<int, Dictionary<string, PlcPoint>>(); public static Dictionary<int, Dictionary<string, PlcPoint>> PlcPoints = new Dictionary<int, Dictionary<string, PlcPoint>>();
public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>(); public static Dictionary<int, Plc.S7.Plc> PlcDic = new Dictionary<int, Plc.S7.Plc>();

@ -1,9 +1,7 @@
using Khd.Core.Domain.Models; using Khd.Core.EntityFramework;
using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Khd.Core.Wcs.Wcs; using Khd.Core.Wcs.Wcs;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Data; using System.Data;
@ -76,7 +74,7 @@ namespace Khd.Core.Wcs
secondFloorPoint.StartPoint(); secondFloorPoint.StartPoint();
//二层AGV //二层AGV
SecondFloorAGV secondFloorAGV = new(_host,2); SecondFloorAGV secondFloorAGV = new(_host, 2);
secondFloorAGV.StartPoint(); secondFloorAGV.StartPoint();
//二楼线体 //二楼线体
@ -100,7 +98,7 @@ namespace Khd.Core.Wcs
fifthFloorPoint.StartPoint(); fifthFloorPoint.StartPoint();
//五层CTU //五层CTU
FiveFloorCTU fiveFloorCTU = new(_host,5); FiveFloorCTU fiveFloorCTU = new(_host, 5);
fiveFloorCTU.StartPoint(); fiveFloorCTU.StartPoint();
//五层AGV //五层AGV
@ -108,7 +106,7 @@ namespace Khd.Core.Wcs
fifthFloorAGV.StartPoint(); fifthFloorAGV.StartPoint();
//背负式Agv //背负式Agv
FiveFloorBearAgv fiveFloorBearAgv = new(_host,5); FiveFloorBearAgv fiveFloorBearAgv = new(_host, 5);
fiveFloorBearAgv.StartPoint(); fiveFloorBearAgv.StartPoint();
} }
catch (Exception ex) catch (Exception ex)

@ -2,7 +2,6 @@
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Wcs; using Khd.Core.Wcs;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -69,7 +68,7 @@ internal class Program
Console.WriteLine("全局异常捕获:"); Console.WriteLine("全局异常捕获:");
Console.WriteLine(exception.Message); Console.WriteLine(exception.Message);
Console.WriteLine(exception.StackTrace); Console.WriteLine(exception.StackTrace);
_logger.Info("全局异常捕获:" + exception.Message+"\n"+exception.StackTrace); _logger.Info("全局异常捕获:" + exception.Message + "\n" + exception.StackTrace);
} }
else else
{ {
@ -91,7 +90,7 @@ internal class Program
StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get<List<PlcConfig>>(); StaticData.PlcConfigs = configuration.GetSection("PlcConfigs").Get<List<PlcConfig>>();
ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"]; ConnectionStrings.ConnectionString = configuration["ConnectionStrings:DefaultConnection"];
StaticData.DeleteLogDay= Convert.ToInt32(configuration["DeleteLogDays"] ?? "10"); StaticData.DeleteLogDay = Convert.ToInt32(configuration["DeleteLogDays"] ?? "10");
} }
private static IHostBuilder CreateHostBuilder(string[] args) => private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)

@ -34,12 +34,12 @@ namespace Khd.Core.Wcs
/// </summary> /// </summary>
/// <param name="wmsBaseLocation"></param> /// <param name="wmsBaseLocation"></param>
/// <param name="dbContext"></param> /// <param name="dbContext"></param>
public static void LockOutLocation(WmsBaseLocation wmsBaseLocation,DefaultDbContext dbContext) public static void LockOutLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{ {
if (wmsBaseLocation.locDeep == 1) if (wmsBaseLocation.locDeep == 1)
{ {
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault(); WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if(wmsLocation != null) if (wmsLocation != null)
{ {
wmsLocation.locationStatus = "2"; wmsLocation.locationStatus = "2";
dbContext.Update(wmsLocation); dbContext.Update(wmsLocation);
@ -65,8 +65,8 @@ namespace Khd.Core.Wcs
} }
} }
public readonly static object SecondTaskLock = new (); public readonly static object SecondTaskLock = new();
public readonly static object ThirdTaskLock = new (); public readonly static object ThirdTaskLock = new();
public readonly static object FiveTaskLock = new (); public readonly static object FiveTaskLock = new();
} }
} }

@ -1,6 +1,5 @@
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;

@ -1,11 +1,9 @@
using AngleSharp.Dom; using Khd.Core.Domain.Models;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -695,7 +693,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
else if (emptyEquip.Count == 3&& secondEmptyEquip.Count >= 2) else if (emptyEquip.Count == 3 && secondEmptyEquip.Count >= 2)
{ {
BaseEquip startEquip = emptyEquip.First(); BaseEquip startEquip = emptyEquip.First();
WcsTask wcsTask = new WcsTask() WcsTask wcsTask = new WcsTask()
@ -1123,7 +1121,7 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(), objid = StaticData.SnowId.NextId(),
orderId = wmsRawOutstock.rawOutstockId, orderId = wmsRawOutstock.rawOutstockId,
taskType = 41, taskType = 41,
containerNo = wmsBaseLocation.containerCode, containerNo = wmsRawStock.palletInfoCode,
createBy = "WCS", createBy = "WCS",
createTime = DateTime.Now, createTime = DateTime.Now,
taskStatus = 0, taskStatus = 0,
@ -1778,6 +1776,10 @@ namespace Khd.Core.Wcs.Wcs
{ {
list = wcsTaskManuals.Where(t => t.taskType == 30).ToList(); list = wcsTaskManuals.Where(t => t.taskType == 30).ToList();
} }
if (list.Count == 0)
{
list = wcsTaskManuals.Where(t => t.taskType == 102).ToList();
}
foreach (var wcs in list.Take(6)) foreach (var wcs in list.Take(6))
{ {
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcs); WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcs);
@ -2594,6 +2596,5 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }

@ -5,7 +5,6 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;

@ -6,13 +6,9 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.ComponentModel;
using System.Transactions;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -570,45 +566,45 @@ namespace Khd.Core.Wcs.Wcs
//WmsProductInstockDetail? wmsProductInstockDetail = dbContext.WmsProductInstockDetail.Where(t => t.productInstockId == wmsProductInstock.productInstockId).FirstOrDefault(); //WmsProductInstockDetail? wmsProductInstockDetail = dbContext.WmsProductInstockDetail.Where(t => t.productInstockId == wmsProductInstock.productInstockId).FirstOrDefault();
//if (wmsProductInstockDetail != null) //if (wmsProductInstockDetail != null)
//{ //{
wmsProductInstock.executeStatus = "2"; wmsProductInstock.executeStatus = "2";
wmsProductInstock.endTime = DateTime.Now; wmsProductInstock.endTime = DateTime.Now;
dbContext.Update(wmsProductInstock); dbContext.Update(wmsProductInstock);
WmsProductStock wmsProductStock = new WmsProductStock() WmsProductStock wmsProductStock = new WmsProductStock()
{ {
productId = wmsProductInstock.productId, productId = wmsProductInstock.productId,
activeFlag = "1", activeFlag = "1",
updateBy = "WCS", updateBy = "WCS",
updateDate = DateTime.Now, updateDate = DateTime.Now,
saleorderCode = wmsProductInstock.saleorderCode, saleorderCode = wmsProductInstock.saleorderCode,
saleOrderId = wmsProductInstock.SaleOrderId == null ? 0 : wmsProductInstock.SaleOrderId, saleOrderId = wmsProductInstock.SaleOrderId == null ? 0 : wmsProductInstock.SaleOrderId,
stockType = "2", stockType = "2",
productStockId = wmsProductInstock.productInstockId, productStockId = wmsProductInstock.productInstockId,
qualityStatus = "0", qualityStatus = "0",
createBy = "WCS", createBy = "WCS",
createDate = DateTime.Now, createDate = DateTime.Now,
locationCode = wmsBaseLocation.locationCode, locationCode = wmsBaseLocation.locationCode,
warehouseFloor = 5, warehouseFloor = 5,
totalAmount = 1, totalAmount = 1,
instockDate = DateTime.Now, instockDate = DateTime.Now,
productBatch = mesBasePalletInfo.materialBarcode, productBatch = mesBasePalletInfo.materialBarcode,
palletInfoCode = mesBasePalletInfo.palletInfoCode, palletInfoCode = mesBasePalletInfo.palletInfoCode,
frozenAmount = 0, frozenAmount = 0,
occupyAmount = 0, occupyAmount = 0,
planCode = wmsProductInstock.planCode, planCode = wmsProductInstock.planCode,
planDetailCode = wmsProductInstock.planDetailCode, planDetailCode = wmsProductInstock.planDetailCode,
warehouseId = 512 warehouseId = 512
}; };
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId); BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
//wmsProductInstockDetail.executeStatus = "2"; //wmsProductInstockDetail.executeStatus = "2";
//wmsProductInstockDetail.instockDate = DateTime.Now; //wmsProductInstockDetail.instockDate = DateTime.Now;
startEquip.emptyCount = 0; startEquip.emptyCount = 0;
//dbContext.Update(wmsProductInstockDetail); //dbContext.Update(wmsProductInstockDetail);
dbContext.Update(startEquip); dbContext.Update(startEquip);
dbContext.Add(wmsProductStock); dbContext.Add(wmsProductStock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsTask.Remove(item); dbContext.WcsTask.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.SaveChanges(); dbContext.SaveChanges();
//} //}
} }

@ -2,10 +2,8 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -56,7 +54,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.IsDelete == 0 || t.IsDelete == null) .Where(t => t.IsDelete == 0 || t.IsDelete == null)
.Where(t => t.nextPointId == agvID) .Where(t => t.nextPointId == agvID)
.OrderBy(t => t.createTime).ToList(); .OrderBy(t => t.createTime).ToList();
foreach (var item in taskList)//出库 foreach (var item in taskList)//出库
{ {
item.updateTime = DateTime.Now; item.updateTime = DateTime.Now;

@ -6,7 +6,6 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -381,7 +380,7 @@ namespace Khd.Core.Wcs.Wcs
item.updateTime = DateTime.Now; item.updateTime = DateTime.Now;
if (item.taskStatus == 0)//CTU会同时生成多个任务生成就下发 if (item.taskStatus == 0)//CTU会同时生成多个任务生成就下发
{ {
if (item.taskType == 30)//出库任务 if (item.taskType == 30 || item.taskType == 100 || item.taskType == 102)//出库任务
{ {
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
@ -476,52 +475,13 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
else if (item.taskType == 100)//盘库
{
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
var agvTask = new RequestAGVTaskDto
{
reqCode = StaticData.SnowId.NextId().ToString(),
positionCodePath = new List<Position>
{
new()
{
positionCode =wmsBaseLocation.agvPositionCode,
type = "05"
},
new()
{
positionCode =endEquip.agvPositionCode,
type = "00"
},
},
ctnrTyp = "1",
taskTyp = "F504"
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.code == "0")
{
item.taskCode = reponseMessage.data;
item.taskStatus = 1;
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
dbContext.SaveChanges();
}
else
{
_logger.Info("CTU下发出库任务失败" + reponseMessage?.message);
}
}
} }
else else
{ {
{ {
if (item.taskStatus == 3) if (item.taskStatus == 3)
{ {
if (item.taskType == 30 || item.taskType == 100) if (item.taskType == 30 || item.taskType == 100 || item.taskType == 102)
{ {
var canOut = StaticData.PlcDic[1].Read(isput.plcpointAddress); var canOut = StaticData.PlcDic[1].Read(isput.plcpointAddress);
if (canOut != null && Convert.ToInt64(canOut) == 0) if (canOut != null && Convert.ToInt64(canOut) == 0)
@ -612,7 +572,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
} }
else if (item.taskType == 100)//出库任务 else if (item.taskType == 100 || item.taskType == 102)//出库任务
{ {
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.currPointId && t.warehouseFloor == 5); .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5);
@ -622,7 +582,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
int wcsTaskCount = dbContext.WcsTask.Where(t => (t.taskType == 30 || t.taskType == 100) && t.taskStatus != 6).Count(); int wcsTaskCount = dbContext.WcsTask.Where(t => (t.taskType == 30 || t.taskType == 100 || item.taskType == 102) && t.taskStatus != 6).Count();
if (wcsTaskCount == 0) if (wcsTaskCount == 0)
{ {
StaticData.PlcDic[1].WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString()); StaticData.PlcDic[1].WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());

@ -5,10 +5,8 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Threading.Tasks;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -63,7 +61,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo); BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo);
if (rfid != null && isSignal != null) if (rfid != null && isSignal != null)
{ {
//正常读到输送线信息 有到位信号,并且有托盘,获取条码信息 //正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
if (Convert.ToInt32(isSignal) == 1)//五楼接驳位 if (Convert.ToInt32(isSignal) == 1)//五楼接驳位
{ {

@ -4,7 +4,6 @@ using Khd.Core.Library;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
@ -21,7 +20,7 @@ namespace Khd.Core.Wcs.Wcs
private readonly IHost _host; private readonly IHost _host;
private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineSignal; private readonly BasePlcpoint LineSignal;
public FourthFloorPoint( IHost host,int floor) public FourthFloorPoint(IHost host, int floor)
{ {
Floor = floor; Floor = floor;
this._host = host; this._host = host;

@ -2,11 +2,9 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -488,7 +486,7 @@ namespace Khd.Core.Wcs.Wcs
if (item.currPointId == lineEquip.objid) if (item.currPointId == lineEquip.objid)
{ {
var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress); var lineSignal02 = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal02").plcpointAddress);
if (lineSignal02 != null && lineSignal02.ToString() == "1") if (lineSignal02 != null && lineSignal02.ToString() == "1")
{ {
var agvTask = new RequestAGVTaskDto var agvTask = new RequestAGVTaskDto
{ {
@ -825,7 +823,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (ex is PlcException) if (ex is PlcException)
{ {
} }
else else
{ {

@ -1,12 +1,10 @@
using Azure.Identity; using Khd.Core.Domain.Models;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;

@ -4,7 +4,6 @@ using Khd.Core.Library;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -83,7 +82,7 @@ namespace Khd.Core.Wcs.Wcs
if (wcsTask.taskType != 99)//不是人工任务 if (wcsTask.taskType != 99)//不是人工任务
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any(); bool hasTask = dbContext.WcsTask.Where(t => t.endPointId == inEquip.objid).Any();
if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0&&!hasTask)//小包入口要料 if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0 && !hasTask)//小包入口要料
{ {
dbContext.WcsTask.Remove(wcsTask);//删除原本的任务 dbContext.WcsTask.Remove(wcsTask);//删除原本的任务
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask); WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);

@ -5,11 +5,8 @@ using Khd.Core.Library;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs

@ -1,5 +1,4 @@
using Castle.Components.DictionaryAdapter.Xml; using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library; using Khd.Core.Library;
@ -7,7 +6,6 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -50,7 +48,7 @@ namespace Khd.Core.Wcs.Wcs
FZJThread.IsBackground = true; FZJThread.IsBackground = true;
FZJThread.Start(); FZJThread.Start();
Thread MonitorTraySignalThread= new Thread(MonitorTraySignal); Thread MonitorTraySignalThread = new Thread(MonitorTraySignal);
MonitorTraySignalThread.Name = "ThirdFloorAGVTraySignal"; MonitorTraySignalThread.Name = "ThirdFloorAGVTraySignal";
MonitorTraySignalThread.IsBackground = true; MonitorTraySignalThread.IsBackground = true;
MonitorTraySignalThread.Start(); MonitorTraySignalThread.Start();

@ -5,7 +5,6 @@ using Khd.Core.Library.Mapper;
using Khd.Core.Plc.S7; using Khd.Core.Plc.S7;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;

@ -1585,6 +1585,7 @@
<Button Content="搜索" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="SelectButton_Click" KeyDown="Form1_KeyDown"/> <Button Content="搜索" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="SelectButton_Click" KeyDown="Form1_KeyDown"/>
<Button Content="出空箱" HorizontalAlignment="Right" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="CallEmptyBtn_Click"/> <Button Content="出空箱" HorizontalAlignment="Right" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="CallEmptyBtn_Click"/>
<Button Content="出选择料箱" HorizontalAlignment="Right" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="200" Margin="20,0,0,0" Click="CallTrayBtn_Click"/> <Button Content="出选择料箱" HorizontalAlignment="Right" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="200" Margin="20,0,0,0" Click="CallTrayBtn_Click"/>
<Button Content="移库" HorizontalAlignment="Right" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="200" Margin="20,0,0,0" Click="RemoveTrayBtn_Click"/>
</StackPanel> </StackPanel>
</Border> </Border>
<Border Grid.Row="1" Height="100" Background="#213269" BorderThickness="2" CornerRadius="10" Margin="0,5,0,0"> <Border Grid.Row="1" Height="100" Background="#213269" BorderThickness="2" CornerRadius="10" Margin="0,5,0,0">
@ -2373,6 +2374,50 @@
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</TabItem> </TabItem>
<TabItem x:Name="RemoveManager" Header="辅料移库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="#213269" Foreground="White" Width="160" Height="100" Margin="5">
<Grid Height="1100" Width="1700">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="辅料移库" FontSize="100" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="4"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="5">
<TextBlock Text="原料箱号:" FontSize="70" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<hc:TextBox x:Name="rawSourceBox" LostFocus="rawSourceBox_LostFocus" FontSize="50" Width="500" Height="150" Margin="0,0,0,0" hc:InfoElement.ShowClearButton="True"/>
<Button Click="rawSourceBoxClear_Click" HorizontalAlignment="Right" Height="100" Panel.ZIndex="1" Width="100" Margin="-100,0,0,0" Grid.Column="5" Grid.Row="2">
<Image Source="..\Resources\cancel.png"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="5">
<TextBlock Text="移库料箱:" FontSize="70" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<hc:TextBox x:Name="removeSourceBox" FontSize="50" LostFocus="removeSourceBox_LostFocus" Width="500" Height="150" Margin="0,0,0,0" hc:InfoElement.ShowClearButton="True"/>
<Button Click="removeSourceBoxClear_Click" HorizontalAlignment="Right" Height="100" Panel.ZIndex="1" Width="100" Margin="-100,0,0,0" Grid.Column="5" Grid.Row="2">
<Image Source="..\Resources\cancel.png"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Center" Margin="5">
<TextBlock Text="条码号:" FontSize="70" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<hc:TextBox x:Name="removeBarCode" FontSize="50" LostFocus="removeBarCode_LostFocus" Width="750" Height="150" Margin="0,0,0,0" hc:InfoElement.ShowClearButton="True"/>
<Button Click="removeBarCodeClear_Click" HorizontalAlignment="Right" Height="100" Panel.ZIndex="1" Width="100" Margin="-100,0,0,0" Grid.Column="5" Grid.Row="2">
<Image Source="..\Resources\cancel.png"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="3" HorizontalAlignment="Center" Margin="5">
<TextBlock Text="数量:" FontSize="70" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock x:Name="removeScan" FontSize="50" Width="150" Margin="0,0,0,0" />
</StackPanel>
<Button Content="确认移库" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4" Width="600" Height="150" FontSize="75" Background="#346DFF" Foreground="White" Click="btnRemoveConfirmBox_Click"/>
</Grid>
</TabItem>
<TabItem x:Name="FirstFloorManager" Header="一楼接驳位" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="#213269" Foreground="White" Width="160" Height="100" Margin="5"> <TabItem x:Name="FirstFloorManager" Header="一楼接驳位" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="#213269" Foreground="White" Width="160" Height="100" Margin="5">
<Grid Height="1100" Width="1700"> <Grid Height="1100" Width="1700">
<Grid.RowDefinitions> <Grid.RowDefinitions>

@ -1,7 +1,6 @@
using HandyControl.Tools.Extension; using HandyControl.Tools.Extension;
using Jc.SnowId; using Jc.SnowId;
using Khd.Core.Domain.Auth; using Khd.Core.Domain.Auth;
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
@ -12,12 +11,11 @@ using Khd.Core.Wpf.Scan;
using Khd.Core.Wpf.TaskForm; using Khd.Core.Wpf.TaskForm;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data; using System.Data;
using System.Diagnostics; using System.Diagnostics;
using System.IO.Ports; using System.IO.Ports;
@ -25,13 +23,11 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Z.EntityFramework.Plus;
using System.Windows.Threading;
using System.Windows.Input;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Collections.ObjectModel; using System.Windows.Input;
using static HandyControl.Tools.Interop.InteropValues; using System.Windows.Threading;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wpf.Form namespace Khd.Core.Wpf.Form
{ {
@ -617,6 +613,7 @@ namespace Khd.Core.Wpf.Form
} }
public int i = 0; public int i = 0;
/// <summary> /// <summary>
/// 查询任务 /// 查询任务
/// </summary> /// </summary>
@ -1758,6 +1755,14 @@ namespace Khd.Core.Wpf.Form
} }
} }
private void rawSourceBoxClear_Click(object sender, RoutedEventArgs e)
{
this.rawSourceBox.Text = string.Empty;
}
private void removeSourceBoxClear_Click(object sender, RoutedEventArgs e)
{
this.removeSourceBox.Text = string.Empty;
}
/// <summary> /// <summary>
/// 入库扫描 /// 入库扫描
/// </summary> /// </summary>
@ -2588,7 +2593,10 @@ namespace Khd.Core.Wpf.Form
//} //}
var wmsBaseLocation = dbContext.WmsBaseLocation var wmsBaseLocation = dbContext.WmsBaseLocation
.Where(t => t.locationStatus == "1") .Where(t => t.locationStatus == "1")
.Where(t => t.warehouseId == 512 && t.ContainerStatus == "1").ToList(); .Where(t => t.warehouseId == 512 && t.ContainerStatus == "1")
.OrderBy(t => t.locColumn)
.ThenBy(t => t.locRow)
.ToList();
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.warehouseId == 512).ToList(); var wmsRawStock = dbContext.WmsRawStock.Where(t => t.warehouseId == 512).ToList();
List<string> palletInfoCodes = wmsRawStock.Select(t => t.palletInfoCode).ToList(); List<string> palletInfoCodes = wmsRawStock.Select(t => t.palletInfoCode).ToList();
wmsBaseLocation.RemoveAll(t => palletInfoCodes.Contains(t.containerCode)); wmsBaseLocation.RemoveAll(t => palletInfoCodes.Contains(t.containerCode));
@ -2653,7 +2661,7 @@ namespace Khd.Core.Wpf.Form
BaseEquip endEquip = SystemData.BaseEquip.First(t => t.objid == 20); BaseEquip endEquip = SystemData.BaseEquip.First(t => t.objid == 20);
if (itemsControlItems.Count == 0) if (itemsControlItems.Count == 0)
{ {
MessageBox.Show("请选择料箱!"); HandyControl.Controls.MessageBox.Show("请选择料箱!");
return; return;
} }
@ -2708,13 +2716,270 @@ namespace Khd.Core.Wpf.Form
item.locationStatus = "6"; item.locationStatus = "6";
dbContext.Update(item); dbContext.Update(item);
} }
if (addList.Count < 6)
{
var messageBoxResult = HandyControl.Controls.MessageBox.Show($"已创建{addList.Count}个料箱的任务,是否需要创建出空箱的任务?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.Yes)
{
EmptyCountForm emptyCountForm = new(1, 6 - addList.Count);
emptyCountForm.ShowDialog();
if (EmptyCountForm.IsSelect)
{
List<WmsBaseLocation> emptyLocations = dbContext.ExecuteSqlQuery<WmsBaseLocation>(@$"
select t1.location_id locationId,
t1.container_code containerCode,
t1.location_code locationCode
from wms_base_location t1
left join wms_raw_stock t2
on t1.location_code=t2.location_code
where t2.location_code is null and t1.location_status=1
and t1.container_status=1 and t1.warehouse_id=512
order by t1.loc_column,t1.loc_row
");
if (emptyLocations.Count < EmptyCountForm.EmptyTaskCount)
{
messageBoxResult = HandyControl.Controls.MessageBox.Show("没有足够的空箱库位库位,剩余空库位数量为" + emptyLocations.Count + "!\n是否将现有的空箱全部出库", "提示", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (messageBoxResult == MessageBoxResult.Yes)
{
foreach (var item in emptyLocations)
{
item.locationStatus = "6";
item.ContainerStatus = "2";
addList.Add(new WcsTaskManual()
{
objid = Global.SnowId.NextId(),
taskType = 30,
containerNo = item.containerCode,
startPointId = item.locationId,
startPointNo = item.locationCode,
currPointId = item.locationId,
currPointNo = item.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
createTime = DateTime.Now,
ud1 = item.locColumn,
taskStatus = 0,
remark = "CTU空库任务",
floorNo = 5,
fromFloorNo = 5,
useFlag = 1
});
dbContext.Update(item);
}
}
}
else
{
for (int i = 0; i < EmptyCountForm.EmptyTaskCount; i++)
{
emptyLocations[i].locationStatus = "6";
emptyLocations[i].ContainerStatus = "2";
addList.Add(new WcsTaskManual()
{
objid = Global.SnowId.NextId(),
taskType = 30,
containerNo = emptyLocations[i].containerCode,
startPointId = emptyLocations[i].locationId,
startPointNo = emptyLocations[i].locationCode,
currPointId = emptyLocations[i].locationId,
currPointNo = emptyLocations[i].locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
createTime = DateTime.Now,
ud1 = emptyLocations[i].locColumn,
taskStatus = 0,
remark = "CTU空库任务",
floorNo = 5,
fromFloorNo = 5,
useFlag = 1
});
dbContext.Update(emptyLocations[i]);
}
}
}
}
}
dbContext.AddRange(addList); dbContext.AddRange(addList);
dbContext.SaveChanges(); dbContext.SaveChanges();
HandyControl.Controls.MessageBox.Show("创建出库任务成功!"); HandyControl.Controls.MessageBox.Show("创建出库任务成功!");
itemsControlItems.Clear();
CallSelectedItem.Clear();
GetPersonCallMaterialData();
}
}
catch
{
}
}
/// <summary>
/// 叫托盘
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RemoveTrayBtn_Click(object sender, RoutedEventArgs e)
{
try
{
BaseEquip ctuEquip = SystemData.BaseEquip.First(t => t.objid == 11);
BaseEquip endEquip = SystemData.BaseEquip.First(t => t.objid == 20);
List<WcsTaskManual> taskList = new List<WcsTaskManual>();
if (itemsControlItems.Count == 0)
{
HandyControl.Controls.MessageBox.Show("请选择料箱!");
return;
}
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
List<long> idList = itemsControlItems.Select(x => x.baseLocationId).ToList();
if (idList.Count == 0)
{
HandyControl.Controls.MessageBox.Error("请选择需要移库的料箱!");
return;
}
else
{
if (idList.Count == 1)
{
List<WmsBaseLocation> emptyLocations = dbContext.ExecuteSqlQuery<WmsBaseLocation>(@$"
select t1.location_id locationId,
t1.container_code containerCode,
t1.location_code locationCode
from wms_base_location t1
left join wms_raw_stock t2
on t1.location_code=t2.location_code
where t2.location_code is null and t1.location_status=1
and t1.container_status=1 and t1.warehouse_id=512
order by t1.loc_column,t1.loc_row
");
var wmsLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationId == idList[0] && t.locationStatus == "1");
if (wmsLocation == null)
{
HandyControl.Controls.MessageBox.Error("选择的料箱错误,请重新选择!");
return;
}
if (emptyLocations.Count == 0)
{
HandyControl.Controls.MessageBox.Error("只选择了一个移库料箱,但是没有空箱库位库位,无法移库!");
return;
}
MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show("选择了一个移库料箱,需要出空料箱,是否确认?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.Yes)
{
WmsBaseLocation emptyLocation = emptyLocations.First();
emptyLocation.locationStatus = "4";
emptyLocation.ContainerStatus = "2";
wmsLocation.locationStatus = "4";
wmsLocation.ContainerStatus = "2";
taskList.Add(new WcsTaskManual()
{
objid = Global.SnowId.NextId(),
taskType = 102,
containerNo = wmsLocation.containerCode,
startPointId = wmsLocation.locationId,
startPointNo = wmsLocation.locationCode,
currPointId = wmsLocation.locationId,
currPointNo = wmsLocation.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
createTime = DateTime.Now,
ud1 = wmsLocation.locColumn,
taskStatus = 0,
remark = "CTU托盘任务",
floorNo = 5,
fromFloorNo = 5,
useFlag = 1
});
taskList.Add(new WcsTaskManual()
{
objid = Global.SnowId.NextId(),
taskType = 102,
containerNo = emptyLocation.containerCode,
startPointId = emptyLocation.locationId,
startPointNo = emptyLocation.locationCode,
currPointId = emptyLocation.locationId,
currPointNo = emptyLocation.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
createTime = DateTime.Now,
ud1 = emptyLocation.locColumn,
taskStatus = 0,
remark = "CTU托盘任务",
floorNo = 5,
fromFloorNo = 5,
useFlag = 1
});
dbContext.Update(wmsLocation);
dbContext.Update(emptyLocation);
dbContext.AddRange(taskList);
dbContext.SaveChanges();
HandyControl.Controls.MessageBox.Show("移库任务创建成功!");
itemsControlItems.Clear();
CallSelectedItem.Clear();
GetPersonCallMaterialData();
}
}
else if (idList.Count == 2)
{
List<WmsBaseLocation> wmsBaseLocations = dbContext.WmsBaseLocation.Where(t => idList.Contains(t.locationId))
.Where(t => t.ContainerStatus == "1")
.Where(t => t.locationStatus == "1")
.ToList();
if (wmsBaseLocations.Count != 2)
{
HandyControl.Controls.MessageBox.Error("选择的料箱库位状态异常,请重新选择!");
return;
}
foreach (var item in wmsBaseLocations)
{
taskList.Add(new WcsTaskManual()
{
objid = Global.SnowId.NextId(),
taskType = 102,
containerNo = item.containerCode,
startPointId = item.locationId,
startPointNo = item.locationCode,
currPointId = item.locationId,
currPointNo = item.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
createTime = DateTime.Now,
ud1 = item.locColumn,
taskStatus = 0,
remark = "CTU托盘任务",
floorNo = 5,
fromFloorNo = 5,
useFlag = 1
});
item.ContainerStatus = "2";
item.locationStatus = "6";
dbContext.Update(item);
}
dbContext.AddRange(taskList);
dbContext.SaveChanges();
HandyControl.Controls.MessageBox.Show("移库任务创建成功!");
itemsControlItems.Clear();
CallSelectedItem.Clear();
GetPersonCallMaterialData();
}
else if (idList.Count > 2)
{
HandyControl.Controls.MessageBox.Error("选择料箱不能超过2个");
return;
}
} }
itemsControlItems.Clear();
CallSelectedItem.Clear();
GetPersonCallMaterialData();
} }
catch catch
{ {
@ -3607,5 +3872,135 @@ namespace Khd.Core.Wpf.Form
} }
} }
#region 移库方法
private void removeSourceBox_LostFocus(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(this.removeSourceBox.Text))
{
return;
}
try
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.containerNo == this.removeSourceBox.Text).FirstOrDefault();
if (wcsTask == null)
{
HandyControl.Controls.MessageBox.Show("未找到该托盘!");
this.removeSourceBox.Text = "";
return;
}
}
catch
{
}
}
private void rawSourceBox_LostFocus(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(this.rawSourceBox.Text))
{
return;
}
try
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.containerNo == this.rawSourceBox.Text).FirstOrDefault();
if (wcsTask == null)
{
HandyControl.Controls.MessageBox.Show("未找到该托盘!");
this.rawSourceBox.Text = "";
return;
}
}
catch
{
}
}
private void removeBarCodeClear_Click(object sender, RoutedEventArgs e)
{
removeBarCode.Text = "";
}
private void removeBarCode_LostFocus(Object sender, RoutedEventArgs e)
{
try
{
if (string.IsNullOrEmpty(this.rawSourceBox.Text))
{
HandyControl.Controls.MessageBox.Show("请先选择托盘!");
return;
}
if (string.IsNullOrEmpty(this.removeBarCode.Text))
{
return;
}
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.palletInfoCode == this.rawSourceBox.Text)
.Where(t => t.instockBatch == this.removeBarCode.Text)
.FirstOrDefault();
if (wmsRawStock == null)
{
HandyControl.Controls.MessageBox.Show($"未在{this.rawSourceBox.Text}托盘中找到{this.removeBarCode.Text}条码!");
this.removeBarCode.Text = "";
this.removeScan.Text = string.Empty;
return;
}
else
{
this.removeScan.Text = wmsRawStock.frozenAmount.ToString();
}
}
catch
{
}
}
private void btnRemoveConfirmBox_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(this.rawSourceBox.Text))
{
HandyControl.Controls.MessageBox.Show("请先选择移库源托盘!");
return;
}
if (string.IsNullOrEmpty(this.removeSourceBox.Text))
{
HandyControl.Controls.MessageBox.Show("请先选择移库条码!");
return;
}
if (string.IsNullOrEmpty(this.removeBarCode.Text))
{
HandyControl.Controls.MessageBox.Show("请先扫码移库数量!");
return;
}
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
try
{
WmsBaseLocation removeLocation = dbContext.WmsBaseLocation.Where(t => t.containerCode == this.removeSourceBox.Text).First();
WmsBaseLocation rawLocation = dbContext.WmsBaseLocation.Where(t => t.containerCode == this.rawSourceBox.Text).First();
dbContext.WmsRawStock.Where(t => t.locationCode == rawLocation.locationCode)
.Where(t => t.instockBatch == this.removeBarCode.Text)
.Update(t => new WmsRawStock
{
locationCode = removeLocation.locationCode,
});
HandyControl.Controls.MessageBox.Show("移库成功!");
this.removeBarCode.Text = "";
this.removeScan.Text = string.Empty;
}
catch
{
}
}
#endregion
} }
} }

@ -43,7 +43,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
using var scope = this._host.Services.CreateScope(); using var scope = this._host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var wmsRawStocks = dbContext.WmsRawStock.Where(t => t.palletInfoCode == _containerNo) var wmsRawStocks = dbContext.WmsRawStock.Where(t => t.palletInfoCode == _containerNo)
.WhereIf(_materialId!=0, t => t.materialId == _materialId) .WhereIf(_materialId != 0, t => t.materialId == _materialId)
.ToList(); .ToList();
if (wmsRawStocks.Count == 0) if (wmsRawStocks.Count == 0)
{ {

@ -4,10 +4,8 @@ using Khd.Core.Wpf.TaskForm.Inventory;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Media.Media3D;
namespace Khd.Core.Wpf.TaskForm namespace Khd.Core.Wpf.TaskForm
{ {
@ -95,7 +93,7 @@ namespace Khd.Core.Wpf.TaskForm
private void EditBtn_Click(object sender, RoutedEventArgs e) private void EditBtn_Click(object sender, RoutedEventArgs e)
{ {
if(this.InventoryDataGrid.SelectedItem!= null) if (this.InventoryDataGrid.SelectedItem != null)
{ {
dynamic item = this.InventoryDataGrid.SelectedItem; dynamic item = this.InventoryDataGrid.SelectedItem;
long materialId = item.MaterialId; long materialId = item.MaterialId;

@ -15,7 +15,7 @@ namespace Khd.Core.Wpf.TaskForm
private readonly IHost _host; private readonly IHost _host;
private readonly string _ud3; private readonly string _ud3;
private readonly int _isOut; private readonly int _isOut;
public SelectOutRawForm(IHost host,string ud3,int isOut) public SelectOutRawForm(IHost host, string ud3, int isOut)
{ {
InitializeComponent(); InitializeComponent();
_host = host; _host = host;

@ -3,8 +3,8 @@
//mysql //mysql
//"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" //"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
//khd //khd
"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" "DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
// "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" // "DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"PlcConfigs": [ "PlcConfigs": [

Loading…
Cancel
Save