生成条码优化

This commit is contained in:
hehaibing-1996
2024-05-13 09:18:49 +08:00
parent f57b79d0fc
commit 88cbe5d052
22 changed files with 262 additions and 220 deletions

View File

@ -21,14 +21,17 @@ namespace WCS.BLL.Manager
public static List<TCPClient> TCPClients = new List<TCPClient>();
public static void InitTcpClient()
{
var ips = DbHelp.db.Queryable<ShelfInfo>().Where(t => t.ShelfCode.Contains("C")).Select(t => t.ClientIp).ToList();
var ips = DbHelp.db.Queryable<ShelfInfo>()
//.Where(t => t.ShelfCode.Contains("C"))
.Select(t => t.ClientIp)
.Distinct()
.ToList();
foreach (var ip in ips)
{
var tcpCleint = new TCPClient(ip, "192.168.9.183:20003");
//配置断线重连
tcpCleint.tcpClient.Received += (client, e) =>
{
var clientIpHost = client.IP + ":" + client.Port;
var TcpCleint = TCPClientManager.GetTCPClientByIPHost(clientIpHost);
if (TcpCleint == null)
@ -99,33 +102,34 @@ namespace WCS.BLL.Manager
Logs.Write("协议处理完毕!");
return EasyTask.CompletedTask;
};
TCPClients.Add(tcpCleint);
tcpCleint.Connect();
}
}
//后台启动时给所有板子、警示灯发送复位操作 保持状态一致
public static void InitStatus()
{
Task.Run(() =>
{
try
{
Thread.Sleep(1000);
//给所有板子发复位
TCPClients.ForEach(tcpClient =>
{
//板子复位
new SmartShelfModule() { BoardId = 2047 }.Reset(tcpClient);
new SmartShelfModule()
{
BoardId = 2047
}.Reset(tcpClient);
//报警灯复位
new WarningLight().CloseLight(tcpClient);
});
}
catch (Exception ex)
{
Logs.Write($"启动时复位异常,{ex.Message}");
Logs.Write($"启动时复位异常,{ex.Message}");
}
});
}

View File

@ -69,7 +69,7 @@ namespace WCS.BLL.Services.Service
MatSn = GetMatSn(matBaseInfo, startNumber + i),
MatCode = matBaseInfo.MatCode,
MatName = matBaseInfo.MatName,
MatBatch = matBaseInfo.MatBatch,
MatBatch = request.MatBatch,
MatSpec = matBaseInfo.MatSpec,
MatUnit = matBaseInfo.MatUnit,
MatSupplier = matBaseInfo.MatSupplier,
@ -107,11 +107,9 @@ namespace WCS.BLL.Services.Service
private string GetMatSn(MatBaseInfo matBaseInfo, int serialNumber)
{
var gongshi = "=A1&\"-\"&A2&A3";
//var matSn = matBaseInfo.MatCode + matBaseInfo.MatBatch + serialNumber.ToString().PadLeft(6, '0');
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
keyValuePairs.Add("A1", matBaseInfo.MatCode);
keyValuePairs.Add("A2", matBaseInfo.MatName);
keyValuePairs.Add("A2", string.IsNullOrEmpty(matBaseInfo.MatBatch) ? "" : matBaseInfo.MatBatch);
keyValuePairs.Add("A3", serialNumber.ToString().PadLeft(6, '0'));
var matSn = PnHelp.Jx(gongshi, keyValuePairs);
return matSn;

View File

@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Runtime;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using WCS.BLL.Config;
using WCS.BLL.DbModels;
using WCS.BLL.HardWare;
@ -15,8 +8,6 @@ using WCS.BLL.Tool;
using WCS.BLL.Tool.Api.ApiModel;
using WCS.DAL.Db;
using WCS.Model;
using WCS.Model.ApiModel.MatBaseInfo;
using static Dm.net.buffer.ByteArrayBuffer;
namespace WCS.BLL.Services.Service
{

View File

@ -30,7 +30,7 @@ namespace WCS.BLL.Services.Service
return new ResponseBase()
{
Code = 201,
Message = "单据同步失败:缺少需要出库的物料类型!"
Message = "出库单据同步失败:缺少需要出库的物料类型!"
};
}
//保存数据
@ -65,7 +65,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 200,
Message = "单据同步成功!"
Message = $"出库单据同步成功!\r\n出库单据号为{request.OrderNumber}",
}; ;
}
catch (Exception ex)
@ -75,7 +75,7 @@ namespace WCS.BLL.Services.Service
return new ResponseBase()
{
Code = 200,
Message = $"单据同步失败:{ex.Message}"
Message = $"出库单据同步失败:{ex.Message}"
};
}
}
@ -89,7 +89,7 @@ namespace WCS.BLL.Services.Service
return new ResponseBase()
{
Code = 201,
Message = "单据同步失败:缺少物料明细!"
Message = "出库单据同步失败:缺少物料明细!"
};
}
//库存有无校验 & 库存已锁校验
@ -109,7 +109,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = "单据同步失败:存在物料不在库存中!",
Message = "出库单据同步失败:存在物料不在库存中!",
Data = request.SnList
};
@ -121,7 +121,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = "单据同步失败:存在物料被锁定!",
Message = "出库单据同步失败:存在物料被锁定!",
Data = inventoryDetails.Where(t => t.IsLocked).Select(t => t.MatSN).ToList()
};
}
@ -176,7 +176,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 200,
Message = $"单据同步成功!",
Message = $"出库单据同步成功!\r\n出库单据号为{request.OrderNumber}",
Data = order.Id
};
#endregion
@ -187,7 +187,7 @@ namespace WCS.BLL.Services.Service
return new ResponseBase()
{
Code = 201,
Message = $"单据同步失败:{ex.Message}"
Message = $"出库单据同步失败:{ex.Message}"
};
}
@ -288,7 +288,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = $"查询失败:不存在单据号为{request.OrderNumber}的出库单!",
Message = $"查询失败:不存在出库单据号为{request.OrderNumber}的出库单!",
};
}
}
@ -348,7 +348,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = $"查询失败:不存在单据号为{request.OrderNumber}的出库单!",
Message = $"查询失败:不存在出库单据号为{request.OrderNumber}的出库单!",
};
}
}
@ -406,7 +406,7 @@ namespace WCS.BLL.Services.Service
//如果是按物料编码出库 需要计算物料明细、并进行物料锁定
if (order.SyncType == SyncTypeEnum.ByMatCode)
{
var result = CaculateOutOrderMatDetails(order);
var result = CaculateOutOrderMatDetails(order, request.UserName);
if (result.Code != 200)
{
return result;
@ -465,13 +465,13 @@ namespace WCS.BLL.Services.Service
var matCode = outOrderDetailCount.First().bb.Key;
outOrderMatDetails = outOrderMatDetails.Where(t => t.MatCode == matCode)
.ToList();
Logs.Write($"发料单{order.OrderNumber},本次亮灯物料{matCode}");
Logs.Write($"出库单{order.OrderNumber},本次亮灯物料{matCode}");
}
//相同物料不存在盘数超过n的情况剩余物料全部亮灯
else
{
//剩余物料全出
Logs.Write($"发料单{order.OrderNumber},剩余物料灯全亮!");
Logs.Write($"出库单{order.OrderNumber},剩余物料灯全亮!");
}
}
@ -500,7 +500,7 @@ namespace WCS.BLL.Services.Service
}
}
//计算、加锁
private ResponseBase CaculateOutOrderMatDetails(OutOrder order)
private ResponseBase CaculateOutOrderMatDetails(OutOrder order, string createUser = "")
{
try
{
@ -514,7 +514,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = $"计算物料失败,{order.OrderNumber}没有单据明细!"
Message = $"计算物料失败,{order.OrderNumber}没有出库单据明细!"
};
}
//第二步 开始计算物料
@ -527,7 +527,7 @@ namespace WCS.BLL.Services.Service
.WhereIF(!string.IsNullOrEmpty(outOrderDetail.MatBatch), t => t.MatBatch == outOrderDetail.MatBatch)
.Where(t => t.IsLocked == false)//未锁定的物料
.OrderBy(t => t.MatBatch)//先进先出
.OrderBy(t => t.MatQty)//零散料先出
//(t => t.MatQty)//零散料先出
.ToList();
//2.2按照搜索出来的库存和当前未出的数量 计算需要出的SN
@ -552,7 +552,7 @@ namespace WCS.BLL.Services.Service
MatSupplier = matInventoryDetails[i].MatSupplier,
MatCustomer = matInventoryDetails[i].MatCustomer,
IsSended = false,
CreateUser = "待定",
CreateUser = createUser,
});
outOrderDetail.ReqQty = 0;
@ -580,7 +580,7 @@ namespace WCS.BLL.Services.Service
MatSupplier = matInventoryDetails[i].MatSupplier,
MatCustomer = matInventoryDetails[i].MatCustomer,
IsSended = false,
CreateUser = "待定",
CreateUser = createUser,
});
matInventoryDetails[i].IsLocked = true;
@ -590,11 +590,21 @@ namespace WCS.BLL.Services.Service
}
DbHelp.db.Insertable(outOrderMatDetails).ExecuteCommand();
DbHelp.db.CommitTran();
return new ResponseCommon()
if (outOrderMatDetails.Count == 0)
{
Code = 200,
Message = $"Success"
};
return new ResponseCommon()
{
Code = 201,
Message = $"计算物料失败,没有满足条件的物料进行出库!(请检查对应物料是否已被锁定)"
};
}
else
return new ResponseCommon()
{
Code = 200,
Message = $"Success"
};
}
catch (Exception ex)
{
@ -607,7 +617,7 @@ namespace WCS.BLL.Services.Service
}
}
//解锁
//删除 解锁
private ResponseBase CancelOutOrderMatDetails(OutOrder order)
{
try
@ -618,7 +628,7 @@ namespace WCS.BLL.Services.Service
.Where(t => t.IsSended == false)
.ToList();
var inventoryIds = outOrderMatDetails.Select(t => t.Id).ToList();
var inventoryIds = outOrderMatDetails.Select(t => t.InventoryDetailId).ToList();
var inventoryDetails = DbHelp.db.Queryable<InventoryDetail>()
.Where(t => inventoryIds.Contains(t.Id))
.ToList();
@ -639,7 +649,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 300,
Message = $"发生异常:{ex.Message}"
Message = $"解锁物料时发生异常:{ex.Message}"
};
}
}
@ -679,7 +689,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 201,
Message = $"单据【{request.OrderNumber}】不在出库中!",
Message = $"出库单据【{request.OrderNumber}】不在出库中!",
Data = null
};
}
@ -694,8 +704,6 @@ namespace WCS.BLL.Services.Service
if (order.SyncType == SyncTypeEnum.ByMatCode)
CancelOutOrderMatDetails(order);
return new ResponseCommon()
{
Code = 200,

View File

@ -296,7 +296,7 @@ namespace WCS.BLL.Services.Service
{
Data = new SysStockTakingOrderData() { StocktakingOrderNumber = request.StocktakingOrderNumber },
Code = 200,
Message = $"Success"
Message = $"生成盘点单据成功!\r\n单据号为{request.StocktakingOrderNumber}"
};
}
catch (Exception ex)

View File

@ -114,7 +114,7 @@ namespace WCS.BLL
this.IsOnline = true;
return EasyTask.CompletedTask;
};
tcpClient.Disconnected += (client, e) =>
{
this.IsOnline = false;