diff --git a/ZR.Model/MES/wms/Dto/WmGoodsActionDto.cs b/ZR.Model/MES/wms/Dto/WmGoodsActionDto.cs index c841f649..8f0248da 100644 --- a/ZR.Model/MES/wms/Dto/WmGoodsActionDto.cs +++ b/ZR.Model/MES/wms/Dto/WmGoodsActionDto.cs @@ -19,6 +19,8 @@ namespace ZR.Model.MES.wms.Dto public class WmGoodsUnpackingDto { public ResultionPackageCodeDto Package { get; set; } + + public int firstNum { get; set; } public string CreateBy { get; set; } } diff --git a/ZR.Service/mes/wms/WmGoodsActionService.cs b/ZR.Service/mes/wms/WmGoodsActionService.cs index b1dda3c9..528c3fef 100644 --- a/ZR.Service/mes/wms/WmGoodsActionService.cs +++ b/ZR.Service/mes/wms/WmGoodsActionService.cs @@ -11,6 +11,9 @@ using System.Linq; using ZR.Service.mes.wms.IService; using ZR.Model.MES.wms.Dto; using System.Text.Json; +using MimeKit.Utils; +using System.Collections.Generic; +using Org.BouncyCastle.Crypto; namespace ZR.Service.Business { @@ -40,7 +43,7 @@ namespace ZR.Service.Business } if (num == 1) { - description = "主箱:" + package.PatchCode + ",次箱:"; + description = "\n主箱:" + package.PatchCode + ",\n次箱:"; } else { @@ -54,12 +57,11 @@ namespace ZR.Service.Business string shortPatchCode = mainPackage.PatchCode.Split('_')[0]; // 该批次最后一个拼箱记录 WmGoodsNowProduction lastConsolidationPackage = Context.Queryable().Where(it => it.PackageCodeClient.Contains(shortPatchCode + "_4")).OrderBy(it => it.PackageCodeClient, OrderByType.Desc).First(); - string newShortPatchCode = shortPatchCode; - + string newPatchCode = shortPatchCode; int lastCode = 400; if (lastConsolidationPackage == null) { - newShortPatchCode += "_401"; + newPatchCode += "_401"; } else { @@ -68,26 +70,32 @@ namespace ZR.Service.Business if (lastCode > 400) { - newShortPatchCode += "_" + (lastCode + 1); + newPatchCode += "_" + (lastCode + 1); } else { - newShortPatchCode += "_401"; + newPatchCode += "_401"; } } } - description += "拼箱结果:" + newShortPatchCode; + description += "\n拼箱结果:" + newPatchCode; + DateTime nowTime = DateTime.Now.ToLocalTime(); var jsonObject = new { - packageList = list + packageList = list, + newPatchCode = newPatchCode, + newQuantityCount = quantityCount, + time = DateUtils.FormatDate(nowTime) }; // 日志记录 - WmGoodsChangeLog log = new WmGoodsChangeLog(); - log.CreatedBy = parm.CreateBy; - log.CreatedTime = DateTime.Now.ToLocalTime(); - log.Description = description; - log.JsonMsg = JsonSerializer.Serialize(jsonObject); - log.Type = 1; + WmGoodsChangeLog log = new() + { + CreatedBy = parm.CreateBy, + CreatedTime = nowTime, + Description = description, + JsonMsg = JsonSerializer.Serialize(jsonObject), + Type = 1 + }; Context.Insertable(log).ExecuteReturnEntity(); // 执行修改 // 1.主箱查出并修改参数 @@ -98,11 +106,11 @@ namespace ZR.Service.Business return null; } nowProduction.UpdatedBy = parm.CreateBy; - nowProduction.UpdatedTime = DateTime.Now.ToLocalTime(); - nowProduction.PackageCodeClient = newShortPatchCode; - nowProduction.PackageCodeOriginal = "Code=" + newShortPatchCode + nowProduction.UpdatedTime = nowTime; + nowProduction.PackageCodeClient = newPatchCode; + nowProduction.PackageCodeOriginal = "Code=" + newPatchCode + "^ItemNumber=" + nowProduction.Partnumber - + "^Order=" + newShortPatchCode.Split('_')[0] + + "^Order=" + newPatchCode.Split('_')[0].Substring(2) + "^Qty=" + quantityCount; nowProduction.GoodsNumLogic = quantityCount; nowProduction.GoodsNumAction = quantityCount; @@ -119,7 +127,107 @@ namespace ZR.Service.Business public WmGoodsChangeLog doUnpackingGoods(WmGoodsUnpackingDto parm) { - return null; + string description = ""; + // 待拆箱 + ResultionPackageCodeDto mainPackage = parm.Package; + + // 验证 + WmGoodsNowProduction mainNowProduction = Context.Queryable().Where(it => it.PackageCodeClient == mainPackage.PatchCode).First(); + if (mainNowProduction == null) + { + return null; + } + + description += "\n由主箱:" + mainPackage.PatchCode + "拆分:"; + // 短批次 + string shortPatchCode = mainPackage.PatchCode.Split('_')[0]; + // 该批次最后一个拼箱记录 + WmGoodsNowProduction lastConsolidationPackage = Context.Queryable().Where(it => it.PackageCodeClient.Contains(shortPatchCode + "_4")).OrderBy(it => it.PackageCodeClient, OrderByType.Desc).First(); + string newPatchCode1 = shortPatchCode; + string newPatchCode2 = shortPatchCode; + int lastCode = 400; + if (lastConsolidationPackage == null) + { + newPatchCode1 += "_401"; + newPatchCode2 += "_402"; + } + else + { + if (int.TryParse(lastConsolidationPackage.PackageCodeClient.Split('_')[1], out lastCode)) + { + if (lastCode > 400) + { + newPatchCode1 += "_" + (lastCode + 1); + newPatchCode2 += "_" + (lastCode + 2); + } + else + { + newPatchCode1 += "_401"; + newPatchCode2 += "_402"; + } + } + } + int firstNum = parm.firstNum; + + int? secondNum = mainNowProduction.GoodsNumAction - firstNum; + if (secondNum <= 0) + { + return null; + } + description += "\n拆箱结果1:" + newPatchCode1 + "数量为" + firstNum + "个"; + description += "\n拆箱结果2:" + newPatchCode2 + "数量为" + secondNum + "个"; + DateTime nowTime = DateTime.Now.ToLocalTime(); + var jsonObject = new + { + mainPackage = mainPackage, + newPatchCode1 = newPatchCode1, + newPatchCode2 = newPatchCode2, + firstNum = firstNum, + secondNum = secondNum, + time = DateUtils.FormatDate(nowTime) + }; + // 日志记录 + WmGoodsChangeLog log = new() + { + CreatedBy = parm.CreateBy, + CreatedTime = nowTime, + Description = description, + JsonMsg = JsonSerializer.Serialize(jsonObject), + Type = 2 + }; + Context.Insertable(log).ExecuteReturnEntity(); + // 执行修改 + // 1.主箱修改为1号分箱参数 + WmGoodsNowProduction newPackage1 = mainNowProduction; + newPackage1.UpdatedBy = parm.CreateBy; + newPackage1.UpdatedTime = nowTime; + newPackage1.PackageCodeClient = newPatchCode1; + newPackage1.PackageCodeOriginal = "Code=" + newPatchCode1 + + "^ItemNumber=" + newPackage1.Partnumber + + "^Order=" + newPatchCode1.Split('_')[0].Substring(2) + + "^Qty=" + firstNum; + newPackage1.GoodsNumLogic = firstNum; + newPackage1.GoodsNumAction = firstNum; + newPackage1.Remark = "拆箱"; + // 修改主箱 + Context.Updateable(newPackage1).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); + // 2.添加一个分箱 + WmGoodsNowProduction newPackage2 = mainNowProduction; + newPackage2.CreatedBy = parm.CreateBy; + newPackage2.CreatedTime = nowTime; + newPackage2.PackageCodeClient = newPatchCode2; + newPackage2.PackageCodeOriginal = "Code=" + newPatchCode2 + + "^ItemNumber=" + newPackage2.Partnumber + + "^Order=" + newPatchCode2.Split('_')[0].Substring(2) + + "^Qty=" + secondNum; + newPackage2.GoodsNumLogic = secondNum; + newPackage2.GoodsNumAction = secondNum; + newPackage2.Remark = "拆箱"; + newPackage2.Id = SnowFlakeSingle.Instance.NextId().ToString(); + // 修改主箱 + Context.Insertable(newPackage1).ExecuteCommand(); + // TODO修改打印记录 + return log; } } } \ No newline at end of file diff --git a/ZR.Service/mes/wms/WmGoodsChangeLogService.cs b/ZR.Service/mes/wms/WmGoodsChangeLogService.cs index 5ffde051..9fa418fd 100644 --- a/ZR.Service/mes/wms/WmGoodsChangeLogService.cs +++ b/ZR.Service/mes/wms/WmGoodsChangeLogService.cs @@ -38,8 +38,8 @@ namespace ZR.Service.Business ; var response = Queryable() .Where(predicate.ToExpression()) + .OrderBy(it=>it.CreatedTime,OrderByType.Desc) .ToPage(parm); - return response; }