Преглед изворни кода

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

# Conflicts:
#	MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs
tangdi пре 2 година
родитељ
комит
3a13e94c6e

+ 72 - 6
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -19,6 +19,7 @@ using MongoDB.Driver.Linq;
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.ComponentModel.Design;
 using System.Linq;
 using System.Threading.Tasks;
 using Volo.Abp.Application.Services;
@@ -3154,7 +3155,7 @@ namespace Business.Replenishment
                 weekPlan[i].ProductionOrder = morder_noList[i].NbrResult;
                 weekPlan[i].OrderNO = OrderNOList[i].NbrResult;
             }
-            await PlanOrderResourceCheck(moList.OrderBy(a=>a.moentry_sys_stime).ToList(), moentryList, bang_id,"",false);
+            await PlanOrderResourceCheck(moList.OrderBy(a=>a.moentry_sys_stime).ToList(), moentryList, bang_id,"",false,false);
 
             var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
             await _businessDbContext.BulkInsertAsync(moList);
@@ -3322,7 +3323,7 @@ namespace Business.Replenishment
             var moListCheck=_mysql_mes_morder.GetListAsync(a=>(a.morder_state==MorderEnum.Initial_state|| string.IsNullOrEmpty(a.morder_state)) && a.factory_id == input.factory_id).Result;
             var moEntryListCheck = _mysql_mes_moentry.GetListAsync(a => moListCheck.Select(b=>b.morder_no).ToList().Contains(a.moentry_mono) && a.factory_id == input.factory_id).Result;
             
-            await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false);
+            await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false,true);
 
             var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
      
@@ -4457,7 +4458,7 @@ namespace Business.Replenishment
                             a.QtyOrded = newqty;
                         });
 
-                        await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true);
+                        await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true,false);
 
                         var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
                         if (weekPlan.IsReplenishmentModel == "N")
@@ -4556,7 +4557,7 @@ namespace Business.Replenishment
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<string> PlanOrderResourceCheck(List<mes_morder> Mes_Morders, List<mes_moentry> moentryList,long bangid,string analogCalcVersion,bool isChangePriority)
+        public async Task<string> PlanOrderResourceCheck(List<mes_morder> Mes_Morders, List<mes_moentry> moentryList,long bangid,string analogCalcVersion,bool isChangePriority,bool IsWeekPlan)
         {
             if (Mes_Morders.Any())
             {
@@ -4616,7 +4617,7 @@ namespace Business.Replenishment
                 //    _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
                 //}
                 //只走计划工单
-                var rtn = await OrderKittingCheck(Mes_Morders, moentryList, bangid,analogCalcVersion,isChangePriority, true);
+                var rtn = await OrderKittingCheck(Mes_Morders, moentryList, bangid,analogCalcVersion,isChangePriority, true, IsWeekPlan);
             }
             else
             {
@@ -5025,6 +5026,10 @@ namespace Business.Replenishment
                             int.TryParse(sysSet[0].Ufld1, out ScheduleAgreement);
                         }
                     }
+
+                    //需要新增的PR集合
+                    CalcPrAdd(prAddList, dbPurchaseList, ic_items, ScheduleAgreement);
+
                     //数据库需要减少的PR集合
                     CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList);//只取新增状态的PR,可以做删除或者修改
 
@@ -5184,6 +5189,67 @@ namespace Business.Replenishment
             });
         }
 
+        public List<srm_pr_main> CalcPrAdd(List<AlignmentCalcDto> prAddList, List<srm_purchase> purchase, List<ic_item> ic_items,int ScheduleAgreement)
+        {
+            List<srm_pr_main> prList = new List<srm_pr_main>();
+            prAddList.ForEach(dto => {
+                var itemPurList = purchase.Where(x => x.number == dto.ItemNum).ToList();
+                var icitem = ic_items.Find(x => x.number == dto.ItemNum);
+                foreach (var supplier in itemPurList)
+                {
+                    srm_pr_main srm_Pr = new srm_pr_main();
+                    srm_Pr.GenerateNewId(help.NextId());
+                    srm_Pr.pr_order_type = icitem.erp_cls == 2 ? "L" : "";//单据类型
+                    srm_Pr.supplier_type = supplier.supplier_type;
+                    srm_Pr.IsRequireGoods = supplier.IsRequireGoods;
+                    if (supplier.supplier_type == "VMI")
+                    {
+                        srm_Pr.IsRequireGoods = 1;
+                        srm_Pr.pr_order_type = "K";
+                    }
+                    srm_Pr.pr_purchaseid = supplier.supplier_id;//供应商id  
+                    srm_Pr.pr_purchasenumber = supplier.supplier_number;//供应商编码
+                    srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
+                    srm_Pr.pr_purchaser = supplier.order_rector_name;//采购员
+                    srm_Pr.pr_purchaser_num = supplier.order_rector_num;//采购员工号(采购信息表)
+                    srm_Pr.pr_rqty = Math.Ceiling(dto.DifferenceQty * supplier.quota_rate.GetValueOrDefault() / 100);//需求数量
+                    srm_Pr.pr_aqty = srm_Pr.pr_rqty;//申请数量
+                    srm_Pr.pr_sqty = srm_Pr.pr_rqty;//建议数量
+                    srm_Pr.icitem_id = icitem.Id;//物料id
+                    srm_Pr.icitem_name = icitem.name;//物料名称
+                    //srm_Pr.num = returnlist.num;
+                    if (ScheduleAgreement==1)
+                    {
+                        supplier.lead_time = 7;//启用计划协议时,默认为7天。
+                        srm_Pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);//系统建议下单日期
+                        srm_Pr.pr_sarrive_date = DateTime.Now.AddDays((double)supplier.lead_time.GetValueOrDefault());//系统建议到达日期(建议到货日期)
+                    }else
+                    {
+                        srm_Pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);//系统建议下单日期
+                        srm_Pr.pr_sarrive_date = DateTime.Now.Date.AddDays(1).AddDays((int)(Math.Ceiling(icitem.clean_leadtime.GetValueOrDefault() + icitem.self_inspection_date.GetValueOrDefault())));
+                    }
+                    srm_Pr.pr_sysprice = supplier.order_price;//系统价格(含税)
+                    srm_Pr.pr_orderprice = srm_Pr.pr_rqty * supplier.order_price;//订单价格(含税)
+                    srm_Pr.pr_price = supplier.netpurchase_price;//采购净价(不含税)
+                    srm_Pr.pr_rate = supplier.taxrate;//税率
+                    srm_Pr.pr_unit = icitem.unit;//单位
+                    srm_Pr.state = 1;//状态
+                    srm_Pr.old_apply_aqty = 0;//已申请数量
+                    srm_Pr.pr_type = icitem.erp_cls == 2 ?2 :3;//申请类型
+                    srm_Pr.currencytype = supplier.currency_type == null ? 1 : supplier.currency_type.Value;//币种
+                    srm_Pr.secInv_ratio = icitem.secinv_ratio;//安全库存触发采购比例
+                    srm_Pr.tenant_id = param.company_id;
+                    srm_Pr.company_id = param.company_id;
+                    srm_Pr.factory_id = param.factoryId;
+                    srm_Pr.create_time = DateTime.Now;
+                    srm_Pr.create_by_name = "admin";
+                    srm_Pr.update_time = DateTime.Now;
+                    srm_Pr.update_by_name = "admin";
+                    prList.Add(srm_Pr);
+                }
+            });
+            return prList;
+        }
         public async Task ExamineResultInsertDBAsync(List<ExamineResult> examines)
         {
             //检查结果写入数据库
@@ -6062,7 +6128,7 @@ namespace Business.Replenishment
             //await _mysql_mes_morder.InsertManyAsync(moList);
             //await _mysql_mes_moentry.InsertManyAsync(moentryList);
             moList = moList.OrderBy(a => a.moentry_sys_stime).ToList();
-            await PlanOrderResourceCheck(moList,moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}",false);
+            await PlanOrderResourceCheck(moList,moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}",false,false);
             return "OK";
         }