diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WMentryWarehousing_productController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WMentryWarehousing_productController.cs
index 903eb65e..263f740d 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WMentryWarehousing_productController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WMentryWarehousing_productController.cs
@@ -134,6 +134,44 @@ namespace ZR.Admin.WebApi.Controllers.mes.wms
}
+ ///
+ /// 4.入库(不传U8)
+ ///
+ ///
+ ///
+ [HttpPost("IntoProductwarehouseNoU8")]
+ [Log(Title = "入库(不传U8)")]
+ public IActionResult IntoProductwarehouseNoU8([FromBody] WmgoodsDto wmgoodsDto)
+ {
+ try
+ {
+ if (wmgoodsDto == null)
+ {
+ return ToResponse(new ApiResult(200, "传入参数为空", false));
+ }
+ string msg = "";
+
+ string createName = HttpContext.GetName();
+ int num = this.wm_entryWarehousing_productService.IntoProductwarehouseNoU8(wmgoodsDto, createName);
+ if (num == 0)
+ {
+ msg = "入库数为0!";
+ }
+ else if (num >= 1)
+ {
+ msg = "成功入库" + num + "箱";
+
+
+ }
+ return ToResponse(new ApiResult(200, msg, num));
+ }
+ catch (Exception e)
+ {
+ return ToResponse(new ApiResult(500, e.Message, e.Message));
+ }
+
+ }
+
///
/// 退货到成品库
diff --git a/ZR.Service/mes/wms/IService/IWMExitwarehouseService.cs b/ZR.Service/mes/wms/IService/IWMExitwarehouseService.cs
index 5fddb998..f113fead 100644
--- a/ZR.Service/mes/wms/IService/IWMExitwarehouseService.cs
+++ b/ZR.Service/mes/wms/IService/IWMExitwarehouseService.cs
@@ -9,7 +9,7 @@
///
public bool ExitwarehouseCommmon(string original);
///
- /// 判断箱子是否存在陈平库中
+ /// 判断箱子是否存在成品库中
///
///
///
diff --git a/ZR.Service/mes/wms/IService/IWMentryWarehousing_productService.cs b/ZR.Service/mes/wms/IService/IWMentryWarehousing_productService.cs
index 7194e734..e95ffc6b 100644
--- a/ZR.Service/mes/wms/IService/IWMentryWarehousing_productService.cs
+++ b/ZR.Service/mes/wms/IService/IWMentryWarehousing_productService.cs
@@ -30,5 +30,7 @@ namespace ZR.Service.mes.wms.IService
// 货物退库(从成品库退货到产线)
public int ReturnProductwarehouse(WmgoodsDto wmgoods, string createName);
+
+ public int IntoProductwarehouseNoU8(WmgoodsDto wmgoods, string createName);
}
}
diff --git a/ZR.Service/mes/wms/WMExitwarehouseService.cs b/ZR.Service/mes/wms/WMExitwarehouseService.cs
index c0465c93..259751d2 100644
--- a/ZR.Service/mes/wms/WMExitwarehouseService.cs
+++ b/ZR.Service/mes/wms/WMExitwarehouseService.cs
@@ -12,7 +12,7 @@ namespace ZR.Service.mes.wms
public class WMExitwarehouseService : BaseService, IWMExitwarehouseService
{
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
- //普通入库
+ // 直接退库
public bool ExitwarehouseCommmon(string original)
{
ResultionPackageCodeDto packageCode = ResolutionPackagecode(original);
diff --git a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs
index 311c359f..516e8843 100644
--- a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs
+++ b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs
@@ -23,6 +23,7 @@ namespace ZR.Service.mes.wms
{
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
+ // 统一入库操作
public int IntoProductwarehouse(WmgoodsDto wmgoods, string createName)
{
try
@@ -659,5 +660,153 @@ namespace ZR.Service.mes.wms
throw new Exception(e.Message);
}
}
+
+ public int IntoProductwarehouseNoU8(WmgoodsDto wmgoods, string createName)
+ {
+ try
+ {
+ // 1. 前置参数校验(事务外执行,不占用连接)
+ if (wmgoods == null || wmgoods.packagelist == null || wmgoods.packagelist.Length == 0)
+ throw new Exception("无入库箱,请检查传入数据!");
+
+ string location = string.IsNullOrEmpty(wmgoods.location) ? "LS" : wmgoods.location;
+ string[] packageArray = wmgoods.packagelist;
+
+ // 去重校验
+ HashSet uniquePackages = new HashSet(packageArray);
+ if (uniquePackages.Count != packageArray.Length)
+ throw new Exception($"入库箱有重复,实际箱数:{uniquePackages.Count}");
+
+ // 2. 解析数据并准备入库列表(事务外执行)
+ List preparegoodsList = new List();
+ HashSet partnumbers = new HashSet();
+ List allPatchCodes = new List();
+ List packageCodeRemark = new List();
+ int totalPackage = 0;
+ int totalPartnumber = 0;
+
+ foreach (var pkgCode in packageArray)
+ {
+ var resultionPackage = ResolutionPackage(pkgCode);
+ if (resultionPackage == null)
+ throw new Exception($"箱标签解析失败: {pkgCode}");
+
+ // 缓存常用属性
+ string patchCode = resultionPackage.PatchCode;
+ int? quantity = resultionPackage.Quantity ?? 0;
+
+ // 收集用于批量校验的箱号
+ allPatchCodes.Add(patchCode);
+ packageCodeRemark.Add(patchCode);
+
+ // 构建入库对象
+ var wmGood = new WmGoodsNowProduction
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ PackageCodeClient = patchCode,
+ Partnumber = resultionPackage.PartNumner,
+ PackageCodeOriginal = resultionPackage.originalCode,
+ LocationCode = location,
+ GoodsNumLogic = quantity.Value,
+ GoodsNumAction = quantity.Value,
+ EntryWarehouseTime = DateTime.Now,
+ CreatedBy = createName,
+ CreatedTime = DateTime.Now
+ };
+
+ // 处理流水号(增加容错)
+ string[] patchParts = patchCode.Split('_');
+ int flowNum = -1;
+ if (patchParts.Length >= 2)
+ int.TryParse(patchParts[1], out flowNum);
+
+ wmGood.PackageCode = Getpack_no(resultionPackage.WorkoderID, flowNum.ToString("000")) ?? "Iminate";
+
+ // 统计数据
+ preparegoodsList.Add(wmGood);
+ partnumbers.Add(wmGood.Partnumber);
+ totalPackage++;
+ totalPartnumber += quantity.Value;
+ }
+
+ // 3. 批量校验已入库状态(单次查询,减少连接占用)
+ if (allPatchCodes.Any())
+ {
+ var existingCodes = Context.Queryable()
+ .Where(it => allPatchCodes.Contains(it.PackageCodeClient))
+ .Select(it => it.PackageCodeClient)
+ .ToList();
+
+ if (existingCodes.Any())
+ throw new Exception($"箱号已入库: {string.Join(",", existingCodes)}");
+ }
+
+ // 4. 数据库操作(最小化事务范围)
+ Context.Ado.BeginTran();
+ try
+ {
+ // 批量更新校验状态
+ var packageCodes = preparegoodsList
+ .Where(p => !string.IsNullOrEmpty(p.PackageCode))
+ .Select(p => p.PackageCode)
+ .ToList();
+
+ if (packageCodes.Any())
+ {
+ Context.Updateable()
+ .SetColumns(it => it.Bitwm == 1)
+ .Where(it => packageCodes.Contains(it.Packcode))
+ .ExecuteCommand();
+ }
+
+ // 批量插入入库记录
+ int insertResult = Context.Insertable(preparegoodsList).ExecuteCommand();
+ if (insertResult == 0)
+ throw new Exception("入库记录插入失败");
+
+ // 插入操作日志
+ var record = new WmGoodsRecord
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkInventoryId = SnowFlakeSingle.Instance.NextId().ToString(),
+ Code = "IntoProductwarehouse",
+ Partnumber = partnumbers.FirstOrDefault() ?? "无零件号",
+ ChangeType = 1,
+ ChangePackage = totalPackage,
+ ChangeQuantity = totalPartnumber,
+ ActionTime = DateTime.Now,
+ Status = 1,
+ Remark =
+ "货物入库(不传U8)"
+ + "\n零件号:"
+ + string.Join(',', partnumbers)
+ + "\n总箱数:"
+ + totalPackage
+ + "\n总零件数:"
+ + totalPartnumber
+ + "\n涉及批次号:\n"
+ + string.Join(',', allPatchCodes),
+ CreatedBy = createName,
+ CreatedTime = DateTime.Now
+ };
+
+ if (Context.Insertable(record).ExecuteCommand() == 0)
+ throw new Exception("操作记录插入失败");
+
+ Context.Ado.CommitTran(); // 提交事务,释放连接
+ }
+ catch
+ {
+ Context.Ado.RollbackTran(); // 回滚事务,释放连接
+ throw;
+ }
+
+ return preparegoodsList.Count;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
}
}
diff --git a/ZR.Service/mes/wms/WmOneTimeRecordService.cs b/ZR.Service/mes/wms/WmOneTimeRecordService.cs
index 845ac6b3..4a01a7ce 100644
--- a/ZR.Service/mes/wms/WmOneTimeRecordService.cs
+++ b/ZR.Service/mes/wms/WmOneTimeRecordService.cs
@@ -505,6 +505,12 @@ namespace ZR.Service.mes.wms
}
foreach (var item in qcBackEndQualityStatistics2)
{
+ int _changeQuantity =
+ item.PolishNumber.Value + item.DamoNumber.Value + item.BaofeiNumber.Value;
+ if (_changeQuantity == 0)
+ {
+ continue;
+ }
// TODO 零件号二次处理
string partNumber = item.PartNumber;
// 使用正则表达式匹配并移除特殊后缀
@@ -522,11 +528,10 @@ namespace ZR.Service.mes.wms
Code = "自动",
Partnumber = processedPartnumber,
ChangeType = 2,
- ChangeQuantity =
- item.PolishNumber + item.DamoNumber + item.BaofeiNumber,
+ ChangeQuantity = _changeQuantity,
ActionTime = item.StartTime,
Status = 1,
- Remark = "后道触摸屏-非直接出库-报表内损耗自动出库,来源:" + item.WorkOrder
+ Remark = "后道触摸屏-W04非直接出库-报表内损耗自动出库,来源:" + item.WorkOrder
}
);
}