Sfoglia il codice sorgente

优化质检、入库操作后台代码

SunYaLong 2 anni fa
parent
commit
8f2a406eea

+ 104 - 17
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/Inspect/QaInspectRecordController.cs

@@ -12,6 +12,7 @@ using ZR.Model.Dto.Inspect;
 using ZR.Model.Models.Inspect;
 using ZR.Service.Business.Inspect;
 using UAParser;
+using System.Net.Security;
 
 namespace ZR.Admin.WebApi.Controllers.Inspect
 {
@@ -163,6 +164,13 @@ namespace ZR.Admin.WebApi.Controllers.Inspect
             return SUCCESS(response);
         }
 
+        [HttpPost("QueryInspectRecordData")]
+        public IActionResult QueryInspectRecordData(string deliverNo,string materialSpecCode)
+        {
+            var response = _QaInspectRecordService.GetCheckedSapDeliverRecordList(deliverNo,materialSpecCode);
+            return SUCCESS(response);
+        }
+
         /// <summary>
         /// 添加质检记录,并更新对应的交验单明细
         /// </summary>
@@ -177,25 +185,104 @@ namespace ZR.Admin.WebApi.Controllers.Inspect
             {
                 throw new CustomException("请求实体不能为空");
             }
-            SapDeliverRecord sapDeliverRecordMd = parm.Adapt<SapDeliverRecord>().ToUpdate(HttpContext);
-            QaInspectRecord qaInspectRecordMd = parm.Adapt<QaInspectRecord>();
-            sapDeliverRecordMd.CheckQty += parm.CheckOkQty;
-            if (sapDeliverRecordMd.CheckQty >= sapDeliverRecordMd.Qty)
+
+
+            List<SapDeliverRecord> sapDeliverList = _SapDeliverRecordService.Queryable()
+                .Where(x => x.DeliverNo == parm.DeliverNo && x.MaterialSpec == parm.MaterialSpec && x.CheckQty < x.Qty)
+                .OrderBy(x => x.Id)
+                .OrderBy(x => x.Qty)
+                .ToList();
+            if (sapDeliverList == null || sapDeliverList.Count <= 0)
             {
-                sapDeliverRecordMd.CheckResult = "OK";
+                throw new CustomException($"交验单:{parm.DeliverNo} 未查询到物料号:{parm.MaterialSpec} 的明细数据!");
             }
-            qaInspectRecordMd.InspectNo = parm.DeliverNo;
-            qaInspectRecordMd.InspectedBy = HttpContext.GetName();
-            qaInspectRecordMd.InspectTime = DateTime.Now;
-            qaInspectRecordMd.CreateBy = HttpContext.GetName();
-            qaInspectRecordMd.CreateTime = DateTime.Now;
-            qaInspectRecordMd.UpdateBy = HttpContext.GetName();
-            qaInspectRecordMd.UpdateTime = DateTime.Now;
-            qaInspectRecordMd.Result = "OK";
-            qaInspectRecordMd.CheckQty = parm.CheckOkQty;
-
-            int response = _SapDeliverRecordService.UpdateSapDeliverRecord(sapDeliverRecordMd);
-            int response1 = _QaInspectRecordService.AddQaInspectRecord(qaInspectRecordMd);
+
+            int sumCheckOkQty = parm.CheckOkQty;
+            int allotNum = 0;
+            List<SapDeliverRecord> allotList = new();
+            List<QaInspectRecord> QaInspectList = new();
+            while (true)
+            {
+                SapDeliverRecord? sapDeliverMd = sapDeliverList.FirstOrDefault(x => x.CheckQty < x.Qty);
+                if(sapDeliverMd == null || allotNum >= sumCheckOkQty)
+                {
+                    break;
+                }
+
+                int tmpNeedNum = sapDeliverMd.Qty - (int)sapDeliverMd.CheckQty;
+
+                if ((allotNum + tmpNeedNum) > sumCheckOkQty)
+                {
+                    int realNeedNum = sumCheckOkQty - allotNum;
+                    allotNum += realNeedNum;
+                    sapDeliverMd.CheckQty += realNeedNum;
+                    sapDeliverMd.CheckResult = "PartOk";
+                    sapDeliverMd.UpdateBy = HttpContext.GetName();
+                    sapDeliverMd.UpdateTime = DateTime.Now;
+                    allotList.Add(sapDeliverMd);
+                    QaInspectRecord qaInspectRecord = sapDeliverMd.Adapt<QaInspectRecord>();
+                    qaInspectRecord.InspectNo = parm.DeliverNo;
+                    qaInspectRecord.InspectedBy = HttpContext.GetName();
+                    qaInspectRecord.InspectTime = DateTime.Now;
+                    qaInspectRecord.CreateBy = HttpContext.GetName();
+                    qaInspectRecord.CreateTime = DateTime.Now;
+                    qaInspectRecord.UpdateBy = HttpContext.GetName();
+                    qaInspectRecord.UpdateTime = DateTime.Now;
+                    qaInspectRecord.Result = "OK";
+                    qaInspectRecord.CheckQty = (int)sapDeliverMd.CheckQty;
+                    qaInspectRecord.BnSnCode = parm.BnSnCode;
+                    QaInspectList.Add(qaInspectRecord);
+                    break;
+                }
+                else
+                {
+                    allotNum += tmpNeedNum;
+                    sapDeliverMd.CheckQty += tmpNeedNum;
+                    sapDeliverMd.CheckResult = "OK";
+                    sapDeliverMd.UpdateBy = HttpContext.GetName();
+                    sapDeliverMd.UpdateTime = DateTime.Now;
+                    allotList.Add(sapDeliverMd);
+                    QaInspectRecord qaInspectRecord = sapDeliverMd.Adapt<QaInspectRecord>();
+                    qaInspectRecord.InspectNo = parm.DeliverNo;
+                    qaInspectRecord.InspectedBy = HttpContext.GetName();
+                    qaInspectRecord.InspectTime = DateTime.Now;
+                    qaInspectRecord.CreateBy = HttpContext.GetName();
+                    qaInspectRecord.CreateTime = DateTime.Now;
+                    qaInspectRecord.UpdateBy = HttpContext.GetName();
+                    qaInspectRecord.UpdateTime = DateTime.Now;
+                    qaInspectRecord.Result = "OK";
+                    qaInspectRecord.CheckQty = (int)sapDeliverMd.CheckQty;
+                    qaInspectRecord.BnSnCode = parm.BnSnCode;
+                    QaInspectList.Add(qaInspectRecord);
+                }
+            }
+            int response = 0;
+            int response1 = 0;
+            for (int i = 0; i < allotList.Count; i++)
+            {
+                response += _SapDeliverRecordService.UpdateSapDeliverRecord(allotList[i]);
+                response1 = _QaInspectRecordService.AddQaInspectRecord(QaInspectList[i]);
+            }
+
+            //SapDeliverRecord sapDeliverRecordMd = parm.Adapt<SapDeliverRecord>().ToUpdate(HttpContext);
+            //QaInspectRecord qaInspectRecordMd = parm.Adapt<QaInspectRecord>();
+            //sapDeliverRecordMd.CheckQty += parm.CheckOkQty;
+            //if (sapDeliverRecordMd.CheckQty >= sapDeliverRecordMd.Qty)
+            //{
+            //    sapDeliverRecordMd.CheckResult = "OK";
+            //}
+            //qaInspectRecordMd.InspectNo = parm.DeliverNo;
+            //qaInspectRecordMd.InspectedBy = HttpContext.GetName();
+            //qaInspectRecordMd.InspectTime = DateTime.Now;
+            //qaInspectRecordMd.CreateBy = HttpContext.GetName();
+            //qaInspectRecordMd.CreateTime = DateTime.Now;
+            //qaInspectRecordMd.UpdateBy = HttpContext.GetName();
+            //qaInspectRecordMd.UpdateTime = DateTime.Now;
+            //qaInspectRecordMd.Result = "OK";
+            //qaInspectRecordMd.CheckQty = parm.CheckOkQty;
+
+            //int response = _SapDeliverRecordService.UpdateSapDeliverRecord(sapDeliverRecordMd);
+            //int response1 = _QaInspectRecordService.AddQaInspectRecord(qaInspectRecordMd);
 
             return ToResponse(response + response1);
         }

+ 19 - 6
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/Inspect/SapDeliverRecordController.cs

@@ -147,10 +147,10 @@ namespace ZR.Admin.WebApi.Controllers.Inspect
             {
                 return SUCCESS("导入失败。<br/><br/>导入交验单文件错误。文件不是xls文件也不是xlsx文件。");
             }
-            if (!dataSet.Tables[0].Rows[0][0].ToString().Contains("北京七星华创"))
-            {
-                return SUCCESS($"导入失败。<br/><br/>导入Excel的【{dataSet.Tables[0].TableName}】中<br/>表头为:{dataSet.Tables[0].Rows[0][0]}<br/>请确认文件无误。");
-            }
+            //if (!dataSet.Tables[0].Rows[0][0].ToString().Contains("北京七星华创"))
+            //{
+            //    return SUCCESS($"导入失败。<br/><br/>导入Excel的【{dataSet.Tables[0].TableName}】中<br/>表头为:{dataSet.Tables[0].Rows[0][0]}<br/>请确认文件无误。");
+            //}
             //通过交验单号,验证是否以存在交验单
             string checkDeliverNo = dataSet.Tables[1].Rows[1][2].ToString().Trim();
             if (string.IsNullOrEmpty(checkDeliverNo))
@@ -237,14 +237,20 @@ namespace ZR.Admin.WebApi.Controllers.Inspect
                 else
                     sapDeliverRecord.SpotCheckQty = Convert.ToInt32(dataSet.Tables[1].Rows[i][23]);//*
 
-                sapDeliverRecord.CheckQty = string.IsNullOrEmpty(dataSet.Tables[1].Rows[i][27].ToString().Trim()) ? 0 : Convert.ToInt32(dataSet.Tables[1].Rows[i][27].ToString().Trim());
+                //sapDeliverRecord.CheckQty = string.IsNullOrEmpty(dataSet.Tables[1].Rows[i][27].ToString().Trim()) ? 0 : Convert.ToInt32(dataSet.Tables[1].Rows[i][27].ToString().Trim());
                 //sapDeliverRecord.InstoreResult = 99;//*//非空 模拟数据
 
+                sapDeliverRecord.CheckQty = 0;
+                sapDeliverRecord.InstoreQty = 0;
+
                 sapDeliverRecord.CreateBy = HttpContext.GetName();
                 sapDeliverRecord.CreateTime = DateTime.Now;
+                sapDeliverRecord.UpdateBy = HttpContext.GetName();
+                sapDeliverRecord.UpdateTime = DateTime.Now;
                 sapDeliverRecord.Remark = "导入数据";
                 string v = sapDeliverRecord.SpotCheckQty > 0 ? ((sapDeliverRecord.CheckQty < sapDeliverRecord.SpotCheckQty) ? (sapDeliverRecord.CheckQty > 0 ? "PartOK" : "NG") : "OK") : "Wait";
-                sapDeliverRecord.CheckResult = v;//计算质检结果,抽检数量为0是未质检Wait,合格数为0则NG,大于零小于抽检数则PartOK,合格数量等于抽检数量则全合格OK
+                //sapDeliverRecord.CheckResult = v;//计算质检结果,抽检数量为0是未质检Wait,合格数为0则NG,大于零小于抽检数则PartOK,合格数量等于抽检数量则全合格OK
+                sapDeliverRecord.CheckResult = "Wait";
                 sapDeliverRecords.Add(sapDeliverRecord);
 
             }
@@ -332,6 +338,13 @@ namespace ZR.Admin.WebApi.Controllers.Inspect
             var response = _SapDeliverRecordService.GetSapDeliverRecordList(deliverNo);
             return SUCCESS(response);
         }
+        [HttpPost("GetSapDeliverRecordSum")]
+        public IActionResult GetSapDeliverRecordSum(string materialSpecCode, string deliverNo)
+        {
+            var response = _SapDeliverRecordService.GetSapDeliverRecordSum(materialSpecCode,deliverNo);
+            return SUCCESS(response);
+        }
+
         #endregion
     }
 }

+ 22 - 2
ZrAdminNetCore-net7.0/ZR.Model/Dto/Inspect/SapDeliverRecordDto.cs

@@ -108,13 +108,33 @@ namespace ZR.Model.Dto.Inspect
 
 
     }
-    public class SapDeliverRecordExtDto : SapDeliverRecordDto
+    public class SapDeliverRecordExtDto //: SapDeliverRecordDto
     {
+        [Required(ErrorMessage = "交验单号不能为空")]
+        public string DeliverNo { get; set; }
+        [Required(ErrorMessage = "规格型号/图号不能为空")]
+        public string MaterialSpec { get; set; }
         public int CheckOkQty { get; set; }
-
         /// <summary>
         /// BN/SN码 
         /// </summary>
         public string BnSnCode { get; set; }
     }
+
+    public class SapDeliverRecordSumDto
+    {
+        [Required(ErrorMessage = "物料编码不能为空")]
+        public string MaterialCode { get; set; }
+
+        [Required(ErrorMessage = "物料名称不能为空")]
+        public string MaterialName { get; set; }
+
+        [Required(ErrorMessage = "规格型号/图号不能为空")]
+        public string MaterialSpec { get; set; }
+
+        [Required(ErrorMessage = "交验单数量不能为空")]
+        public int SumQty { get; set; }
+
+        public int? SumCheckQty { get; set; }
+    }
 }

+ 1 - 1
ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/Inspect/IQaInspectRecordService.cs

@@ -24,7 +24,7 @@ namespace ZR.Service.Business.IBusinessService.Inspect
 
         #region 2023 0524 孙亚龙 新增
         List<SapDeliverDto> GetCheckedDeliverData(QaInspectRecordQueryNoPageDto parm);
-        List<QaInspectRecordDto> GetCheckedSapDeliverRecordList(string deliverNo);
+        List<QaInspectRecordDto> GetCheckedSapDeliverRecordList(string deliverNo, string materialSpecCode = null);
         #endregion
     }
 }

+ 1 - 0
ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/Inspect/ISapDeliverRecordService.cs

@@ -32,6 +32,7 @@ namespace ZR.Service.Business.IBusinessService.Inspect
         #region 2023 0524 孙亚龙 新增
         List<SapDeliverDto> GetListNoPage(SapDeliverQueryNoPageDto parm);
         List<SapDeliverRecordDto> GetSapDeliverRecordList(string deliverNo);
+        SapDeliverRecordSumDto GetSapDeliverRecordSum(string materialSpecCode, string deliverNo);
         #endregion
     }
 }

+ 2 - 1
ZrAdminNetCore-net7.0/ZR.Service/Business/Inspect/QaInspectRecordService.cs

@@ -137,11 +137,12 @@ namespace ZR.Service.Business.Inspect
             return response.Adapt<List<SapDeliverDto>>();
         }
 
-        public List<QaInspectRecordDto> GetCheckedSapDeliverRecordList(string deliverNo)
+        public List<QaInspectRecordDto> GetCheckedSapDeliverRecordList(string deliverNo, string materialSpecCode = null)
         {
             //开始拼装查询条件
             var predicate = Expressionable.Create<QaInspectRecord>();
             predicate.And(x => x.DeliverNo == deliverNo);
+            predicate.AndIF(!string.IsNullOrEmpty(materialSpecCode), x => x.MaterialSpec == materialSpecCode);
             //predicate.And(x => x.Qty > x.CheckQty);
             //搜索条件查询语法参考Sqlsugar
             var response = Queryable()

+ 26 - 0
ZrAdminNetCore-net7.0/ZR.Service/Business/Inspect/SapDeliverRecordService.cs

@@ -170,6 +170,32 @@ namespace ZR.Service.Business.Inspect
             return response.Adapt<List<SapDeliverRecordDto>>();
         }
 
+        public SapDeliverRecordSumDto GetSapDeliverRecordSum(string materialSpecCode, string deliverNo)
+        {
+            //开始拼装查询条件
+            var predicate = Expressionable.Create<SapDeliverRecord>();
+            predicate.And(x => x.MaterialSpec == materialSpecCode);
+            predicate.And(x => x.DeliverNo == deliverNo);
+            //搜索条件查询语法参考Sqlsugar
+            var response = Queryable()
+                .GroupBy(x => new { x.MaterialCode, x.MaterialName, x.MaterialSpec })
+                .Where(predicate.ToExpression())
+                .Select(x => new {
+                    x.MaterialCode,
+                    x.MaterialName,
+                    x.MaterialSpec,
+                    SumQty = SqlFunc.AggregateSum(x.Qty),
+                    SumCheckQty = SqlFunc.AggregateSum(x.CheckQty),
+                }).ToList();
+            if (response.Count > 0)
+            {
+                return response[0].Adapt<SapDeliverRecordSumDto>();
+            }
+            else
+            { 
+                return null;
+            }
+        }
         #endregion
     }
 }