zhengly vor 3 Jahren
Ursprung
Commit
7976e6b816

+ 58 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/GenerateMorderDto.cs

@@ -0,0 +1,58 @@
+using Bussiness.Model.MES.IC;
+using Bussiness.Model.Sale;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.ResourceExamineManagement.Dto
+{
+    public class GenerateMorderDto
+    {
+        /// <summary>
+        /// 销售订单子表
+        /// </summary>
+        public crm_seorderentry seorderentry { get; set; }
+        /// <summary>
+        /// 物料详情
+        /// </summary>
+        public ic_item ic_Item { get; set; }
+        /// <summary>
+        /// Bom编码
+        /// </summary>
+        public string BomNumber { get; set; }
+        /// <summary>
+        /// Bom版本
+        /// </summary>
+        public string version { get; set; }
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string number { get; set; }
+        /// <summary>
+        /// 需要数量
+        /// </summary>
+        public decimal? Quantity { get; set; }
+        /// <summary>
+        /// 父级ID
+        /// </summary>
+        public long? ParentId { get; set; } = null;
+        /// <summary>
+        /// 生产工单类型
+        /// </summary>
+        public string morder_type { get; set; }
+        /// <summary>
+        /// 工单类型
+        /// </summary>
+        public string work_order_type { get; set; }
+        /// <summary>
+        /// 工单状态
+        /// </summary>
+        public string morder_state { get; set; }
+        /// <summary>
+        /// 工单建议开始时间
+        /// </summary>
+        public DateTime? moentry_sys_stime { get; set; } = null;
+    }
+}

+ 35 - 35
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -81,57 +81,57 @@ namespace Business.ResourceExamineManagement
         /// <param name="number">物料编码</param>
         /// <param name="Quantity"></param>
         /// <param name="ParentId"></param>
-        public Mes_MorderDto GenerateMorder(crm_seorderentry seorderentry, ic_item ic_Item, string BomNumber, string version, string number, decimal? Quantity, long? ParentId = null)
+        public Mes_MorderDto GenerateMorder(GenerateMorderDto generateMorderDto)
         {
             //1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
 
             //2.每一个销售订单行对应一个工单。
             //TODO:考虑性能问题 循环调用,后期改造传递数组,批量处理数据后,批量保存。
             //获取销售订单信息
-            var seorder = _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id).Result;
+            var seorder = _mysql_crm_seorder.FindAsync(x => x.Id == generateMorderDto.seorderentry.seorder_id).Result;
 
             mes_morder mes_Morder = new mes_morder();
             mes_Morder.GenerateNewId();
-            mes_Morder.morder_type = "销售工单";
-            mes_Morder.parent_id = ParentId;
+            mes_Morder.morder_type = generateMorderDto.morder_type;
+            mes_Morder.parent_id = generateMorderDto.ParentId;
             //mes_Morder.morder_icitem_type
-            mes_Morder.work_order_type = "常规工单";
-            mes_Morder.morder_state = "初始";
+            mes_Morder.work_order_type = generateMorderDto.work_order_type;
+            mes_Morder.morder_state = generateMorderDto.morder_state;
             mes_Morder.morder_no = string.Format("VMO{0}", DateTime.Now.ToString("yyyyMMddhhmmss"));//测试编码
-            mes_Morder.fms_number = ic_Item.fms_number;
-            mes_Morder.bom_number = BomNumber;
-            mes_Morder.fmodel = ic_Item.model;
-            if (ParentId != null)
+            mes_Morder.fms_number = generateMorderDto.ic_Item.fms_number;
+            mes_Morder.bom_number = generateMorderDto.BomNumber;
+            mes_Morder.fmodel = generateMorderDto.ic_Item.model;
+            if (generateMorderDto.ParentId != null && generateMorderDto.moentry_sys_stime != null)
             {
                 //最早的开工时间3天后、 最晚时间为订单承诺时间 - 采购提前期 - 质检提前期 - 入库提前期 - 发料提前期 = 最晚开工时间  最早或最晚为系统建议开工日期
-                var StartDate = DateTime.Now.Date.AddDays(3);
-                mes_Morder.moentry_sys_stime = StartDate;
-                if (!string.IsNullOrEmpty(BomNumber))
+                //var StartDate = DateTime.Now.Date.AddDays(3);
+                mes_Morder.moentry_sys_stime = generateMorderDto.moentry_sys_stime;
+                if (!string.IsNullOrEmpty(generateMorderDto.BomNumber))
                 {
                     ProdExamineParamDto prodExamine = new ProdExamineParamDto()
                     {
-                        bom_number = BomNumber,
-                        version = version,
-                        packages = (int)Quantity.GetValueOrDefault(),
-                        tenantId = seorderentry.tenant_id,
-                        factoryId = seorderentry.factory_id.GetValueOrDefault()
+                        bom_number = generateMorderDto.BomNumber,
+                        version = generateMorderDto.version,
+                        packages = (int)generateMorderDto.Quantity.GetValueOrDefault(),
+                        tenantId = generateMorderDto.seorderentry.tenant_id,
+                        factoryId = generateMorderDto.seorderentry.factory_id.GetValueOrDefault()
                     };
                     var ProductiveDate = _productExamineAppService.ProductiveExamine(prodExamine);
                     //系统建议完工日期为 开工日期+产能检查时间=完工日期
                     var Day = ProductiveDate.Result / (60 * 10); //返回的分钟除以十个小时得出工作天数;
-                    mes_Morder.moentry_sys_etime = StartDate.AddDays((double)Day);
+                    mes_Morder.moentry_sys_etime = mes_Morder.moentry_sys_stime.GetValueOrDefault().AddDays((double)Day);
                     mes_Morder.morder_need_time = ProductiveDate.Result;
                 }
             }
 
             mes_Morder.moentry_startup_status = 0;
-            mes_Morder.tenant_id = seorderentry.tenant_id;
-            mes_Morder.factory_id = seorderentry.factory_id;
-            mes_Morder.product_code = number;
-            mes_Morder.product_name = ic_Item.name;
+            mes_Morder.tenant_id = generateMorderDto.seorderentry.tenant_id;
+            mes_Morder.factory_id = generateMorderDto.seorderentry.factory_id;
+            mes_Morder.product_code = generateMorderDto.number;
+            mes_Morder.product_name = generateMorderDto.ic_Item.name;
             mes_Morder.project_name = seorder.project_name;
-            mes_Morder.planner_num = seorderentry.planner_no;
-            mes_Morder.planner_name = seorderentry.planner_name;
+            mes_Morder.planner_num = generateMorderDto.seorderentry.planner_no;
+            mes_Morder.planner_name = generateMorderDto.seorderentry.planner_name;
             mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
             //mes_Morder.morder_fstate = "计划";
             //TODO:目前没有取值位置
@@ -141,23 +141,23 @@ namespace Business.ResourceExamineManagement
             mes_Morder.moentry_wrkcname = null;
             mes_Morder.picking_qty = 0;
             //TODO:可删除主表字段
-            mes_Morder.unit = ic_Item.unit;
-            mes_Morder.morder_production_number = Quantity;
-            mes_Morder.need_number = Quantity;
+            mes_Morder.unit = generateMorderDto.ic_Item.unit;
+            mes_Morder.morder_production_number = generateMorderDto.Quantity;
+            mes_Morder.need_number = generateMorderDto.Quantity;
             mes_Morder.remaining_number = 0;
             //生成工单子表数据
             mes_moentry mes_Moentry = new mes_moentry();
             mes_Moentry.GenerateNewId();
             mes_Moentry.moentry_moid = mes_Morder.Id;
             mes_Moentry.moentry_mono = mes_Morder.morder_no;
-            mes_Moentry.soentry_id = seorderentry.Id;
-            mes_Moentry.fbill_no = seorderentry.bill_no;
-            mes_Moentry.fentry_id = seorderentry.entry_seq.Value;
-            mes_Moentry.unit = ic_Item.unit;
-            mes_Moentry.morder_production_number = Quantity;
-            mes_Moentry.need_number = Quantity;
+            mes_Moentry.soentry_id = generateMorderDto.seorderentry.Id;
+            mes_Moentry.fbill_no = generateMorderDto.seorderentry.bill_no;
+            mes_Moentry.fentry_id = generateMorderDto.seorderentry.entry_seq.Value;
+            mes_Moentry.unit = generateMorderDto.ic_Item.unit;
+            mes_Moentry.morder_production_number = generateMorderDto.Quantity;
+            mes_Moentry.need_number = generateMorderDto.Quantity;
             mes_Moentry.remaining_number = 0;
-            mes_Moentry.factory_id = seorderentry.factory_id;
+            mes_Moentry.factory_id = generateMorderDto.seorderentry.factory_id;
 
             Mes_MorderDto mes_MorderDto = new Mes_MorderDto();
             mes_MorderDto.mes_Morders = new List<mes_morder>();

+ 14 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -899,8 +899,21 @@ namespace Business.ResourceExamineManagement
 
                 //获取物料详情
                 var ic_item = _ic_item.GetManyByCondition(x => x.number == seorderentry.item_number && x.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
+                GenerateMorderDto generateMorderDto = new GenerateMorderDto()
+                {
+                    seorderentry = seorderentry,
+                    ic_Item = ic_item,
+                    BomNumber = returnlist[0].bom_number,
+                    version = returnlist[0].version,
+                    number = returnlist[0].item_number,
+                    Quantity = returnlist[0].lack_qty,
+                    morder_type = "销售工单",
+                    work_order_type = "常规工单",
+                    morder_state = "初始",
+
+                };
                 //生成主工单
-                mes_MorderDto = _morderAppService.GenerateMorder(seorderentry, ic_item, returnlist[0].bom_number, returnlist[0].version, returnlist[0].item_number, returnlist[0].lack_qty);
+                mes_MorderDto = _morderAppService.GenerateMorder(generateMorderDto);
             }
 
             //这是从上往下展开计算缺料和可制