소스 검색

工单齐套下达、生成备料单逻辑修改开发。

tangdi 2 년 전
부모
커밋
f4f6c7d8c6

+ 12 - 3
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs

@@ -5,6 +5,7 @@ using Volo.Abp.Application.Dtos;
 using Volo.Abp.Application.Services;
 using Business.ResourceExamineManagement.Dto;
 using Business.Dto;
+using Business.Domain;
 
 namespace Business.ResourceExamineManagement
 {
@@ -25,7 +26,7 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="workOrds"></param>
         /// <returns></returns>
-        Task<string> CreatePickBill(string workOrds, string domain);
+        Task<string> CreatePickBill(string workOrds, string domain, string userAccount);
 
         /// <summary>
         /// 栗都쇱꿴
@@ -35,11 +36,11 @@ namespace Business.ResourceExamineManagement
         Task<string> ReceiveResult(string ids, int type,string companyid);
 
         /// <summary>
-        /// 묏데쇱꿴
+        /// 객휑퍅렀鍋묏데쇱꿴
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        Task<string> OrderResourceCheck(int day, string companyid);
+        Task<string> ProduceDayPlanKittingCheck(string startime, string endtime, string domain, string userAccount);
 
         /// <summary>
         /// 競덜죕쇱꿴
@@ -96,5 +97,13 @@ namespace Business.ResourceExamineManagement
         /// <param name="ids"></param>
         /// <returns></returns>
         Task<string> PrApprove(string ids);
+
+        /// <summary>
+        /// 객묏데쇱꿴
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<string> ProduceWorkOrdKittingCheck(string workord, string domain, string userAccount);
+
     }
 }

+ 209 - 35
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1,3 +1,4 @@
+using Amazon.Runtime.Internal.Util;
 using Business.Core.Enum;
 using Business.Core.Utilities;
 using Business.Domain;
@@ -6,15 +7,18 @@ using Business.EntityFrameworkCore;
 using Business.EntityFrameworkCore.SqlRepositories;
 using Business.PriorityManagement;
 using Business.ResourceExamineManagement.Dto;
+using Business.StructuredDB.WMS;
 using EFCore.BulkExtensions;
 using Microsoft.EntityFrameworkCore;
 using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
+using SixLabors.ImageSharp;
 using Spire.Pdf.General.Render.Decode.Jpeg2000.j2k.wavelet.synthesis;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.Design;
 using System.Linq;
 using System.Linq.Dynamic.Core;
 using System.Threading.Tasks;
@@ -204,6 +208,16 @@ namespace Business.ResourceExamineManagement
         private readonly ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
 
         /// <summary>
+        /// 物料职责表
+        /// </summary>
+        private readonly ISqlRepository<EmpWorkDutyMaster> _empWorkDutyMaster;
+
+        /// <summary>
+        /// 雇员信息表
+        /// </summary>
+        private readonly ISqlRepository<EmployeeMaster> _employeeMaster;
+
+        /// <summary>
         /// 排产结果明细
         /// </summary>
         private ISqlRepository<ScheduleResultOpMaster> _scheduleResultOpMaster;
@@ -394,6 +408,8 @@ namespace Business.ResourceExamineManagement
             IRepository<srm_supplier, long> mysql_srm_supplier,
             ISqlRepository<TagMaster> tagMasterRepository,
             ISqlRepository<PeriodSequenceDet> periodSequenceDet,
+            ISqlRepository<EmployeeMaster> employeeMaster,
+            ISqlRepository<EmpWorkDutyMaster> empWorkDutyMaster,
             ISqlRepository<LineMaster> lineMaster,
             ISqlRepository<ItemMaster> itemMaster,
             PretreatmentAppService pretreatmentAppService,
@@ -476,6 +492,8 @@ namespace Business.ResourceExamineManagement
             _mysql_srm_supplier = mysql_srm_supplier;
             _tagMasterRepository = tagMasterRepository;
             _periodSequenceDet = periodSequenceDet;
+            _employeeMaster = employeeMaster;
+            _empWorkDutyMaster = empWorkDutyMaster;
             _pretreatmentAppService = pretreatmentAppService;
             _CalcBomViewAppService = calcbomviewAppService;
             _purchaseOrderAppService = purchaseOrderAppService;
@@ -2329,28 +2347,18 @@ namespace Business.ResourceExamineManagement
 
 
         /// <summary>
-        /// 按未来N天工单齐套检查
+        /// 按工单齐套检查
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<string> OrderResourceCheck(int day, string companyid)
+        public async Task<string> OrderResourceCheck(List<mes_morder> mo_Mes_Morders,string domain, string userAccount)
         {
-            List<mes_morder> mo_Mes_Morders = new List<mes_morder>();
-            if (day <= 0)
-            {
-                return "请选择开工时间在今天之后的工单。";
-            }
-            else
-            {
-                mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => companyid == x.company_id.ToString() && x.moentry_sys_stime >= DateTime.Now.Date.AddDays(1) && x.moentry_sys_stime <= DateTime.Now.Date.AddDays(day) && x.morder_state == MorderEnum.Initial_state && !x.IsDeleted).Result;
-            }
-
             List<mes_morder> checkMo = new List<mes_morder>();
             //只做库存是否齐套检查
             if (mo_Mes_Morders.Any())
             {
                 //检查工单是否已经下了领料单
-                var nbrList = _nbrMaster.Select(a => a.Domain == mo_Mes_Morders[0].factory_id.GetValueOrDefault().ToString() && a.Type == "SM" && mo_Mes_Morders.Select(c => c.morder_no).Contains(a.WorkOrd));
+                var nbrList = _nbrMaster.Select(a => a.Domain == domain && a.Type == "SM" && mo_Mes_Morders.Select(c => c.morder_no).Contains(a.WorkOrd));
                 foreach (var mo in mo_Mes_Morders)
                 {
                     //查出已产生领料单、过滤掉,取出未领料的工单
@@ -2392,7 +2400,7 @@ namespace Business.ResourceExamineManagement
                     var rtn = await OrderKittingCheck(checkMo);
                     if (rtn != null && rtn.examines != null)
                     {
-                        var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "WorkOrderLockPeriod" && s.Domain == companyid).ToList();
+                        var sysSet = _generalizedCodeMaster.Select(s => s.FldName == "SystemConfig" && s.Val == "WorkOrderLockPeriod" && s.Domain == domain).ToList();
                         decimal lookDay = 0;
                         if (sysSet.Any())
                         {
@@ -2457,7 +2465,12 @@ namespace Business.ResourceExamineManagement
                 {
                     workords = workords.Substring(1, workords.Length - 1);
                     //如果生成领料单,需清理掉当前工单的占用,然后根据领料单的数据,来生成工单的占用
-                    await CreatePickBill(workords, mo_Mes_Morders[0].factory_id.GetValueOrDefault().ToString());
+                    await CreatePickBill(workords, domain, userAccount);
+                    var insertList = GetCopyOP(workords, domain);
+                    if (insertList.Any())
+                    {
+                        _periodSequenceDet.Insert(insertList);
+                    }
                 }
                 return "ok";
             }
@@ -2466,6 +2479,137 @@ namespace Business.ResourceExamineManagement
             }
         }
 
+        //寻找子工序生成排产计划
+        public List<PeriodSequenceDet> GetCopyOP(string workords,string domain)
+        {
+            List<PeriodSequenceDet> returnList = new List<PeriodSequenceDet>();
+            if (string.IsNullOrEmpty(workords))
+            {
+                return returnList;
+            }
+            List<string> workOrd = workords.Split(",").ToList();
+            
+            //工单信息
+            var workOrdMasters = _workOrdMaster.Select(p => p.Domain == domain && workOrd.Contains(p.WorkOrd));
+            //当前工单所有工序
+            var workordRList = _workOrdRouting.Select(s => s.Domain == domain && workOrd.Contains(s.WorkOrd)).ToList();
+            //产线
+            List<ProdLineDetail> prodLines = _prodLineDetail.Select(p => workOrdMasters.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == domain && p.IsActive);
+            //获取已排产的工单
+            List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrd.Contains(p.WorkOrds) && p.Domain == domain && p.IsActive);
+
+            List<WorkOrdRouting> copyList = new List<WorkOrdRouting>();
+            foreach (var work in workOrd)
+            {
+                List<WorkOrdRouting> alllist = workordRList.Where(s => s.WorkOrd == work).ToList();
+                List<WorkOrdRouting> parentlist = alllist.Where(s => s.WorkOrd == work && s.ParentOp == 0).ToList();
+                copyList.AddRange(parentlist.Where(s => s.MilestoneOp == false).ToList());
+                GetChildOP(parentlist, alllist, copyList);
+            }
+            foreach (var wor in copyList)
+            {
+                var workPsd = dbPeriodSequences.Where(s => s.ItemNum == wor.ItemNum && s.WorkOrds == wor.WorkOrd).ToList();
+                var line = prodLines.Where(p => p.Part == wor.ItemNum && p.Op == wor.OP).FirstOrDefault();
+                foreach (var psd in workPsd)
+                {
+                    var newPsd = new PeriodSequenceDet
+                    {
+                        Domain = domain,
+                        //Line = item.Line,
+                        ItemNum = wor.ItemNum,
+                        PlanDate = psd.PlanDate,
+                        Period = 1,//目前只考虑一班制
+                        OrdQty = psd.OrdQty,
+                        WorkOrds = wor.WorkOrd,
+                        Op = wor.OP,
+                        IsActive = true,
+                        Status = "",
+                        CreateTime = DateTime.Now
+                    };
+                    if (line != null)
+                    {
+                        newPsd.Line = line.Line;
+                    }
+                    else
+                    {
+                        newPsd.Line = psd.Line;
+                    }
+                    returnList.Add(newPsd);
+                }
+            }
+            return returnList;
+        }
+
+        //递归寻找到子级工序里工序编码最大的一条记录。
+        public void GetChildOP(List<WorkOrdRouting> parentlist, List<WorkOrdRouting> alllist, List<WorkOrdRouting> copyList)
+        {
+            foreach (var parent in parentlist)
+            {
+                var list = alllist.Where(s => s.ParentOp == parent.OP).ToList();
+                if (list.Any())
+                {
+                    var maxOp = list.OrderByDescending(s => s.OP).FirstOrDefault();
+                    if (maxOp != null)
+                    {
+                        copyList.Add(maxOp);
+                    }
+                    GetChildOP(list, alllist, copyList);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 范围内工单齐套检查并下达
+        /// </summary>
+        /// <param name="startime"></param>
+        /// <param name="endtime"></param>
+        /// <param name="domain"></param>
+        /// <returns></returns>
+        public async Task<string> ProduceDayPlanKittingCheck(string startime,string endtime,string domain, string userAccount)
+        {
+            DateTime stime = DateTime.Now.Date.AddDays(-100);
+            if (!string.IsNullOrEmpty(startime))
+            {
+                DateTime.TryParse(startime, out stime);
+            }
+            DateTime etime = DateTime.Now.Date.AddYears(2);
+            if (!string.IsNullOrEmpty(endtime))
+            {
+                DateTime.TryParse(startime, out etime);
+            }
+
+            var periodSd = _periodSequenceDet.Select(s => s.Domain == domain && (s.Status == "" || s.Status == "r") && stime <= s.PlanDate && s.PlanDate <= etime).ToList();
+            if (periodSd.Any())
+            {
+                periodSd.Select(s => s.WorkOrds).ToList();
+                List<mes_morder> mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && periodSd.Select(s => s.WorkOrds).Contains(x.morder_no) && (x.morder_state == MorderEnum.Initial_state || x.morder_state == MorderEnum.Xd_state) && !x.IsDeleted).Result;
+                return await OrderResourceCheck(mo_Mes_Morders, domain, userAccount);
+            }
+            else { 
+                return "没有需要检查的工单";
+            }
+        }
+
+        /// <summary>
+        /// 工单齐套检查并下达
+        /// </summary>
+        /// <param name="startime"></param>
+        /// <param name="endtime"></param>
+        /// <param name="domain"></param>
+        /// <returns></returns>
+        public async Task<string> ProduceWorkOrdKittingCheck(string workord, string domain,string userAccount)
+        {
+            if (!string.IsNullOrEmpty(workord))
+            {
+                List<mes_morder> mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => domain == x.factory_id.ToString() && x.morder_no == workord && x.morder_state == MorderEnum.Initial_state && !x.IsDeleted).Result;
+                return await OrderResourceCheck(mo_Mes_Morders, domain, userAccount);
+            }
+            else
+            {
+                return "没有需要检查的工单";
+            }
+        }
+
         /// <summary>
         /// 工单齐套检查/替代料齐套检查结果保存
         /// </summary>
@@ -3083,25 +3227,37 @@ namespace Business.ResourceExamineManagement
             AutoCreateBomBill(companyid);
         }
 
-        public async Task AutoCreatePickBill(List<WorkOrdMaster> workOrdMasters, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList)
+        public async Task AutoCreatePickBill(List<WorkOrdMaster> workOrdMasters, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList, string userAccount)
         {
             if (dbPeriodSequences.Any())
             {
                 List<string> AllLines = dbPeriodSequences.Where(a => workOrdMasters.Select(b=>b.WorkOrd).Contains(a.WorkOrds)).Select(a => a.Line).Distinct().ToList();
                 List<LineMaster> AllLineMasters = _lineMaster.Select(p => AllLines.Contains(p.Line) && p.Domain == workOrdMasters[0].Domain && p.IsActive);
-
-
+                var user = _employeeMaster.Select(s => s.Employee == userAccount && s.Domain == workOrdMasters[0].Domain).FirstOrDefault();
+                var ewdmList = _empWorkDutyMaster.Select(s => s.Domain == workOrdMasters[0].Domain).ToList();
                 //按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
                 foreach (var workord in workOrdMasters)
                 {
                     Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
                     decimal QtyOrdSum = workord.QtyOrded;
-                    List<string> lines = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Select(a => a.Line).Distinct().ToList();
-                    List<LineMaster> lineMasters = AllLineMasters.Where(p => lines.Contains(p.Line) && p.Domain == workord.Domain && p.IsActive).ToList();
+                    string LocationTo = "";
+                    LineMaster defaultLine = null;
+
+                    var dftPs = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).OrderBy(s => s.CreateTime).FirstOrDefault();
+                    if (dftPs != null)
+                    {
+                        List<LineMaster> lineMasters = AllLineMasters.Where(p => p.Line == dftPs.Line && p.Domain == workord.Domain && p.IsActive).ToList();
+                        if (lineMasters.Any())
+                        {
+                            defaultLine = lineMasters.FirstOrDefault();
+                        }
+                        LocationTo = defaultLine?.VLocation;
+                    }
+                    
                     List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum, QtyOrdSum, workord.Domain);
                     var childrenList = itemList.Select(a => a.ComponentItem).Distinct().ToList();
                     List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
-                    var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number)).Result;
+                    var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number) && s.factory_id.ToString() == workord.Domain).Result;
                     //获取预处理提前期最大值
                     decimal cleanTime = 0;
                     if (dopIcitems.Any())
@@ -3111,21 +3267,20 @@ namespace Business.ResourceExamineManagement
                     List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
                     var Nbr = GetMaxSerialNumber(417416915624005);
                     
-                    string LocationTo= lineMasters.FirstOrDefault()?.Location;
                     DateTime eff = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1);
                     DateTime start = eff.AddDays((double)(0 - cleanTime - 1));
                     if (start <= DateTime.Now.Date)
                     {
                         start = DateTime.Now.Date;
                     }
-                    nbrMasterList.Add(new NbrMaster
+                    var newNbr = new NbrMaster
                     {
-                        Domain = workOrdMasters[0].Domain,
+                        Domain = workord.Domain,
                         Type = "SM",
                         Nbr = Nbr,
                         Remark = "下达自动领料",
                         //Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
-                        //ProdLine = item.Line,
+                        ProdLine = defaultLine?.Line,
                         EffDate = eff,
                         Date = start,
                         Status = "",
@@ -3133,13 +3288,15 @@ namespace Business.ResourceExamineManagement
                         QtyOrd = QtyOrdSum,
                         IsActive = true,
                         IsChanged = true,
-                        Name = workOrdMasters[0].Domain,
+                        Name = userAccount,
                         Department = "101",
                         CreateTime = DateTime.Now,
                         UpdateTime = DateTime.Now,
-                        CreateUser = workOrdMasters[0].Domain,
-                        UpdateUser = workOrdMasters[0].Domain
-                    });
+                        CreateUser = user?.Name,
+                        UpdateUser = user?.Name,
+                    };
+                    nbrMasterList.Add(newNbr);
+                    List<string> headAccount = new List<string>();
                     int i = 1;
                     itemList?.ForEach(a =>
                     {
@@ -3148,14 +3305,22 @@ namespace Business.ResourceExamineManagement
                         if (find != null)
                         {
                             LocationFrom = find.Location;
+                            //找出职责范围负责人
+                            //s.ItemNum1 <= a.ComponentItem && a.ComponentItem <= s.ItemNum2
+                           var ewdm = ewdmList.Find(s => 0 >= string.Compare(s.ItemNum1, a.ComponentItem) && 0 >= string.Compare(a.ComponentItem, s.ItemNum2));
+                            if (ewdm != null && !string.IsNullOrEmpty(ewdm.Employee))
+                            {
+                                headAccount.Add(ewdm.Employee);
+                            }
                         }
+                        
                         //相同物料汇总
                         var itemComponent = nbrDetailList.Find(b => b.Nbr == Nbr && b.ItemNum == a.ComponentItem);
                         if (itemComponent == null)
                         {
                             nbrDetailList.Add(new NbrDetail
                             {
-                                Domain = workOrdMasters[0].Domain,
+                                Domain = workord.Domain,
                                 Type = "SM",
                                 Nbr = Nbr,
                                 ItemNum = a.ComponentItem,
@@ -3170,8 +3335,8 @@ namespace Business.ResourceExamineManagement
                                 IsActive = true,
                                 CreateTime = DateTime.Now,
                                 UpdateTime = DateTime.Now,
-                                CreateUser = workOrdMasters[0].Domain,
-                                UpdateUser = workOrdMasters[0].Domain,
+                                CreateUser = user?.Name,
+                                UpdateUser = user?.Name,
                                 UM = a.UM
                             });
                             i++;
@@ -3182,6 +3347,15 @@ namespace Business.ResourceExamineManagement
                             nbrDetailList.First(b => b.Nbr == Nbr && b.ItemNum == a.ComponentItem).CurrQtyOpened = itemComponent.CurrQtyOpened + a.Qty;
                         }
                     });
+
+                    if (headAccount.Any())
+                    {
+                        headAccount.Distinct();
+                        newNbr.User1 = string.Join(",", headAccount);
+                        string[] user2 = headAccount.ToArray();
+                        newNbr.User2 =JsonConvert.SerializeObject(user2);
+                    }
+
                     //先屏蔽备料单扣除库存的DEMO演示。
                     /*nbrDetailList.ForEach(a =>
                     {
@@ -3379,7 +3553,7 @@ namespace Business.ResourceExamineManagement
         /// 生成领料单
         /// </summary>
         /// <param name="workOrd"></param>
-        public async Task<string> CreatePickBill(string workOrd, string domain)
+        public async Task<string> CreatePickBill(string workOrd, string domain, string userAccount)
         {
             List<string> workOrds = new List<string>();
             List<WorkOrdMaster> workOrdMasters = new List<WorkOrdMaster>();
@@ -3407,7 +3581,7 @@ namespace Business.ResourceExamineManagement
             //查出已排产的工单
             workOrdMasters = workOrdMasters.Where(p => dbWorkOrds.Contains(p.WorkOrd)).ToList();
             //查出已产生领料单、过滤掉,取出未领料的工单
-            var nbrList = _nbrMaster.Select(a => a.Domain == workOrdMasters[0].Domain && a.Type == "SM" && dbWorkOrds.Contains(a.WorkOrd));
+            var nbrList = _nbrMaster.Select(a => a.Domain == domain && a.Type == "SM" && dbWorkOrds.Contains(a.WorkOrd));
             var noNbrlist = nbrList.Select(p => p.WorkOrd).ToList();
             workOrdMasters = workOrdMasters.Where(p => !noNbrlist.Contains(p.WorkOrd)).ToList();
             if (workOrdMasters.Count == 0)
@@ -3428,7 +3602,7 @@ namespace Business.ResourceExamineManagement
             var ords = workOrdMasters.Select(p => p.WorkOrd).ToList();
 
             dbPeriodSequences = dbPeriodSequences.Where(p => ords.Contains(p.WorkOrds)).ToList();
-            await AutoCreatePickBill(workOrdMasters, dbPeriodSequences, nbrMasterList, nbrDetailList);
+            await AutoCreatePickBill(workOrdMasters, dbPeriodSequences, nbrMasterList, nbrDetailList, userAccount);
             if (nbrMasterList.Any())
             {
                 dbPeriodSequences.ForEach(p => { p.Status = "r"; });

+ 6 - 0
MicroServices/Business/Business.Domain/StructuredDB/MES/IC/NbrMaster.cs

@@ -113,6 +113,12 @@ namespace Business.Domain
         public string User1 { get; set; }
 
         /// <summary>
+        /// 备料人
+        /// </summary>
+        [Comment("备料人")]
+        public string User2 { get; set; }
+
+        /// <summary>
         /// 完成日期
         /// </summary>
         [Comment("完成日期")]

+ 48 - 0
MicroServices/Business/Business.Domain/StructuredDB/WMS/EmpWorkDutyMaster.cs

@@ -0,0 +1,48 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.StructuredDB.WMS
+{
+    /// <summary>
+    /// 物料职责表
+    /// </summary>
+    [Comment("物料职责表")]
+    public class EmpWorkDutyMaster
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        [Comment("域名")]
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 账号
+        /// </summary>
+        [Comment("账号")]
+        public string Employee { get; set; }
+
+        /// <summary>
+        /// 起始编码
+        /// </summary>
+        [Comment("起始编码")]
+        public string ItemNum1 { get; set; }
+
+        /// <summary>
+        /// 结束编码
+        /// </summary>
+        [Comment("结束编码")]
+        public string ItemNum2 { get; set; }
+    }
+}

+ 42 - 0
MicroServices/Business/Business.Domain/StructuredDB/WMS/EmployeeMaster.cs

@@ -0,0 +1,42 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.StructuredDB.WMS
+{
+    /// <summary>
+    /// 雇员信息表
+    /// </summary>
+    [Comment("雇员信息表")]
+    public class EmployeeMaster
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        public int RecID { get; set; }
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        [Comment("域名")]
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 账号
+        /// </summary>
+        [Comment("账号")]
+        public string Employee { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        [Comment("名称")]
+        public string Name { get; set; }
+    }
+}

+ 10 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -93,6 +93,16 @@ namespace Business.EntityFrameworkCore
         public DbSet<PeriodSequenceDet> PeriodSequenceDet { get; set; }
 
         /// <summary>
+        /// 雇员信息表
+        /// </summary>
+        public DbSet<EmployeeMaster> EmployeeMaster { get; set; }
+
+        /// <summary>
+        /// 物料职责表
+        /// </summary>
+        public DbSet<EmpWorkDutyMaster> EmpWorkDutyMaster { get; set; }
+
+        /// <summary>
         /// 生产线明细表
         /// </summary>
         public DbSet<ProdLineDetail> ProdLineDetail { get; set; }

+ 15 - 7
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -1,4 +1,5 @@
-using Business.Dto;
+using Business.Domain;
+using Business.Dto;
 using Business.ResourceExamineManagement;
 using Business.ResourceExamineManagement.Dto;
 using Microsoft.AspNetCore.Mvc;
@@ -50,9 +51,9 @@ namespace Business.Controllers
         /// <returns></returns>
         [HttpPost]
         [Route("CreatePickBill")]
-        public Task<string> CreatePickBill(string workOrds, string domain)
+        public Task<string> CreatePickBill(string workOrds, string domain, string userAccount)
         {
-            return _ResourceExamineAppService.CreatePickBill(workOrds, domain);
+            return _ResourceExamineAppService.CreatePickBill(workOrds, domain, userAccount);
         }
 
         /// <summary>
@@ -68,15 +69,15 @@ namespace Business.Controllers
         }
 
         /// <summary>
-        /// 资源检查
+        /// 齐套检查下达
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet]
-        [Route("orderresourcecheck")]
-        public Task<string> OrderResourceCheck(int day, string companyid)
+        [Route("producedayplankittingcheck")]
+        public Task<string> ProduceDayPlanKittingCheck(string startime, string endtime, string domain, string userAccount)
         {
-            return _ResourceExamineAppService.OrderResourceCheck(day, companyid);
+            return _ResourceExamineAppService.ProduceDayPlanKittingCheck(startime, endtime, domain, userAccount);
         }
 
         /// <summary>
@@ -173,5 +174,12 @@ namespace Business.Controllers
         {
             return _ResourceExamineAppService.PrApprove(ids);
         }
+
+        [HttpGet]
+        [Route("ProduceWorkOrdKittingCheck")]
+        public Task<string> ProduceWorkOrdKittingCheck(string workord, string domain, string userAccount)
+        {
+            return _ResourceExamineAppService.ProduceWorkOrdKittingCheck(workord, domain, userAccount);
+        }
     }
 }