فهرست منبع

子件工单和在库齐套数计算

Pengxy 10 ماه پیش
والد
کامیت
c25b405c41

+ 8 - 8
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -801,14 +801,14 @@ namespace Business.ResourceExamineManagement
                         item.stock_state = 1;
                         item.kitting_state = 3;
                     }
-                    else if (!LongPeriod)
-                    {
-                        //item.lack_qty -= moo_qty;
-                        item.make_qty = item.lack_qty - item.mo_qty;
-                        item.stock_state = 0;
-                        item.kitting_state = 5;
-                        item.kitting_time = plan_date.GetValueOrDefault();
-                    }
+                    //else if (!LongPeriod)
+                    //{
+                    //    //item.lack_qty -= moo_qty;
+                    //    item.make_qty = item.lack_qty - item.mo_qty;
+                    //    item.stock_state = 0;
+                    //    item.kitting_state = 5;
+                    //    item.kitting_time = plan_date.GetValueOrDefault();
+                    //}
                     else
                     {
                         //item.lack_qty -= moo_qty;

+ 68 - 64
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -268,87 +268,91 @@ namespace Business.ResourceExamineManagement
         /// <param name="factoryid">工单的工厂id</param>
         /// <param name="type">排产类型:1-自动排产;2-手动排产</param>
         /// <returns></returns>
-        public async Task<string> DoProductSchedule(DateTime startTime,List<WorkOrdMaster> workOrds, string factoryid,int type)
+        public async Task<string> DoProductSchedule(DateTime startTime,List<WorkOrdMaster> workOrds, string factoryid,int type, List<WorkPriorityDto> dbWorkOrds=null)
         {
             //记录工厂id
             domain = factoryid;
             //记录排产开始时间
             scheTime = startTime;
-            //获取工单领料单
-            var nbrMasterList = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && workOrds.Select(s => s.WorkOrd).Contains(x.WorkOrd)).ToList();
-            //获取领料单明细
-            var nbrDtlLists = _nbrDetail.Select(x => x.Domain == domain && nbrMasterList.Select(s => s.Nbr).Contains(x.Nbr)).ToList();
-            workOrds = workOrds.OrderBy(p => p.Priority).ToList();
-            //记录工单数据
-            List<WorkPriorityDto> dbWorkOrds = workOrds.Select(p => new WorkPriorityDto { 
-                WorkOrd = p.WorkOrd,
-                Priority = p.Priority,
-                QtyOrded= p.QtyOrded
-            }).ToList();
-            //处理工单优先级:正常投产工单优先级最高,其次是前处理状态为部分完成/全部完成,其他按照工单优先级排
-            decimal ytc = 1m;
-            decimal ktc = 10000m;
-            decimal bktc = 20000m;
-            for (int i = 0; i < workOrds.Count; i++)
+            if (dbWorkOrds == null)
             {
-                //正在投产
-                if (!string.IsNullOrEmpty(workOrds[i].Status) && workOrds[i].Status.ToUpper() == "W")
-                {
-                    workOrds[i].Priority = ytc;
-                    ytc++;
-                    continue;
-                }
-                //需要前处理的领料单
-                var qclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType == "PrevProcess");
-                //不需要前处理的领料单
-                var bqclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType != "PrevProcess");
-                List<NbrDetail> bqclNbrDtls = new List<NbrDetail>();
-                if (bqclNbr!= null)
+                //获取工单领料单
+                var nbrMasterList = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && workOrds.Select(s => s.WorkOrd).Contains(x.WorkOrd)).ToList();
+                //获取领料单明细
+                var nbrDtlLists = _nbrDetail.Select(x => x.Domain == domain && nbrMasterList.Select(s => s.Nbr).Contains(x.Nbr)).ToList();
+                workOrds = workOrds.OrderBy(p => p.Priority).ToList();
+                //记录工单数据
+                dbWorkOrds = workOrds.Select(p => new WorkPriorityDto
                 {
-                    bqclNbrDtls = nbrDtlLists.Where(p => p.Nbr == bqclNbr.Nbr).ToList();
-                }
-                //存在领料单:不需要前处理-领料单明细存在已关闭物料,需要前处理-状态为部分完成或者全部完成
-                if (qclNbr != null && bqclNbr != null)
+                    WorkOrd = p.WorkOrd,
+                    Priority = p.Priority,
+                    QtyOrded = p.QtyOrded
+                }).ToList();
+                //处理工单优先级:正常投产工单优先级最高,其次是前处理状态为部分完成/全部完成,其他按照工单优先级排
+                decimal ytc = 1m;
+                decimal ktc = 10000m;
+                decimal bktc = 20000m;
+                for (int i = 0; i < workOrds.Count; i++)
                 {
-                    if ((qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed") && bqclNbrDtls.Exists(p=>p.Status.ToUpper() == "C"))
+                    //正在投产
+                    if (!string.IsNullOrEmpty(workOrds[i].Status) && workOrds[i].Status.ToUpper() == "W")
                     {
-                        workOrds[i].Priority = ktc;
-                        ktc++;
+                        workOrds[i].Priority = ytc;
+                        ytc++;
                         continue;
                     }
-                    workOrds[i].Priority = bktc;
-                    bktc++;
-                    continue;
-                }
-                if (qclNbr != null && bqclNbr == null)
-                {
-                    if (qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed")
+                    //需要前处理的领料单
+                    var qclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType == "PrevProcess");
+                    //不需要前处理的领料单
+                    var bqclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType != "PrevProcess");
+                    List<NbrDetail> bqclNbrDtls = new List<NbrDetail>();
+                    if (bqclNbr != null)
                     {
-                        workOrds[i].Priority = ktc;
-                        ktc++;
+                        bqclNbrDtls = nbrDtlLists.Where(p => p.Nbr == bqclNbr.Nbr).ToList();
+                    }
+                    //存在领料单:不需要前处理-领料单明细存在已关闭物料,需要前处理-状态为部分完成或者全部完成
+                    if (qclNbr != null && bqclNbr != null)
+                    {
+                        if ((qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed") && bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
+                        {
+                            workOrds[i].Priority = ktc;
+                            ktc++;
+                            continue;
+                        }
+                        workOrds[i].Priority = bktc;
+                        bktc++;
                         continue;
                     }
-                    workOrds[i].Priority = bktc;
-                    bktc++;
-                    continue;
-                }
-                if (qclNbr == null && bqclNbr != null)
-                {
-                    if (bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
+                    if (qclNbr != null && bqclNbr == null)
                     {
-                        workOrds[i].Priority = ktc;
-                        ktc++;
+                        if (qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed")
+                        {
+                            workOrds[i].Priority = ktc;
+                            ktc++;
+                            continue;
+                        }
+                        workOrds[i].Priority = bktc;
+                        bktc++;
+                        continue;
+                    }
+                    if (qclNbr == null && bqclNbr != null)
+                    {
+                        if (bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
+                        {
+                            workOrds[i].Priority = ktc;
+                            ktc++;
+                            continue;
+                        }
+                        workOrds[i].Priority = bktc;
+                        bktc++;
+                        continue;
+                    }
+                    if (qclNbr == null && bqclNbr == null)
+                    {
+                        workOrds[i].Priority = bktc;
+                        bktc++;
                         continue;
                     }
-                    workOrds[i].Priority = bktc;
-                    bktc++;
-                    continue;
-                }
-                if (qclNbr == null && bqclNbr == null)
-                {
-                    workOrds[i].Priority = bktc;
-                    bktc++;
-                    continue;
                 }
             }
             

+ 98 - 11
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -4060,10 +4060,10 @@ namespace Business.ResourceExamineManagement
 
             //调用优先级计算算法
             //var workOrds = _replenishmentAppService.CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
-            if (!writeNum)
-            {
-                workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).OrderBy(c => c.Priority).ToList();
-            }
+            //if (!writeNum)
+            //{
+            //    workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).OrderBy(c => c.Priority).ToList();
+            //}
             var workOrdRoutings = _workOrdRouting.Select(a => mo_Mes_Morders.Select(p => p.morder_no).Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).ToList();
             //var recid = workOrds.Select(c => c.RecID).ToList();
             //清理工单物料明细
@@ -4118,6 +4118,8 @@ namespace Business.ResourceExamineManagement
             }*/
             _CalcBomViewAppService.GenerateMoList = GenerateMoList;
             _CalcBomViewAppService.newStockOccList = new List<mo_ic_item_stockoccupy>();
+           //var deletesklist = sklist.Where(s => !priorityMorderList.Select(p => p.morder_no).Contains(s.morder_mo)).ToList();
+            sklist = sklist.Where(s => !priorityMorderList.Select(p => p.morder_no).Contains(s.morder_mo)).ToList();
             foreach (var item in priorityMorderList)
             {
                 var moentry = mo_Mes_Moentries.Find(s => s.moentry_moid == item.Id);
@@ -4181,8 +4183,8 @@ namespace Business.ResourceExamineManagement
                 //var curFacDtl = leadTimeList.FirstOrDefault(p => p.item_id == childBom.icitem_id);
                 //物料齐套时间
                 dtl.kitting_times = getBomList.Where(p => p.is_use && p.kitting_time != null).OrderByDescending(m => m.kitting_time).First().kitting_time.GetValueOrDefault();
-                //kitting_time=null为自制组件跳过数据未进行计算
-                var qllist = getBomList.Where(x => x.use_qty == 0 && x.kitting_time != null && x.needCount != 0 && x.level != 1).ToList();
+                //kitting_time=null为自制组件跳过数据未进行计算,kitting_state=0的数据未参与计算
+                var qllist = getBomList.Where(x => x.use_qty == 0 && x.kitting_time != null && x.needCount != 0 && x.level != 1 && x.kitting_state != 0).ToList();
                 var work = workOrds.Find(x => x.WorkOrd == item.morder_no);
                 if (qllist.Any())
                 {
@@ -4190,10 +4192,11 @@ namespace Business.ResourceExamineManagement
                 }
                 else
                 {
-                    qllist = getBomList.Where(x => x.use_qty > 0 && x.kitting_time != null && x.needCount != 0 && x.level != 1).ToList();
+                    qllist = getBomList.Where(x => x.use_qty > 0 && x.kitting_time != null && x.needCount != 0 && x.level != 1 && x.kitting_state!=0).ToList();
                     if (qllist.Any())
                     {
-                        work.LocationStock = qllist.Min(b => b.use_qty);
+                        //按比例计算成品齐套个数
+                        work.LocationStock = qllist.Min(b => b.use_qty/b.qty);
                     }
                     else
                     {
@@ -4217,7 +4220,7 @@ namespace Business.ResourceExamineManagement
                         item.need_number = curInfo.need_number;
                     }
                 }
-                _businessDbContext.BulkUpdate(workOrds); 
+                _businessDbContext.BulkUpdate(workOrds);
             }
             List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
             if (!writeNum)
@@ -5234,7 +5237,7 @@ namespace Business.ResourceExamineManagement
                 workOrd.QtyOrded = item.need_number.GetValueOrDefault();
                 workOrd.Period = 1;
                 workOrd.Priority = Priority;
-                workOrd.Status = "";
+                workOrd.Status = "P";
                 workOrd.IsActive = true;
                 workOrd.IsConfirm = true;
                 var curItem = itemMasters.FirstOrDefault(p => p.ItemNum == item.product_code);
@@ -5783,12 +5786,96 @@ namespace Business.ResourceExamineManagement
             ////尚未开始生产的工单+正在生产的工单
             //var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && ((p.OrdDate < endDate && p.OrdDate >= startTime && p.Status.ToUpper() == "P" && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.Typed.ToUpper() != "PW" && p.BusinessID > 0))) || p.Status.ToUpper() == "W")).ToList();
             var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && (p.QtyOrded - p.QtyCompleted) > 0 && p.Status != "C" && p.Status != "c" && !string.IsNullOrEmpty(p.Status) && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.Typed.ToUpper() != "PW" && p.BusinessID > 0))).ToList();
+
+            //获取工单领料单
+            var nbrMasterList = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && workOrds.Select(s => s.WorkOrd).Contains(x.WorkOrd)).ToList();
+            //获取领料单明细
+            var nbrDtlLists = _nbrDetail.Select(x => x.Domain == domain && nbrMasterList.Select(s => s.Nbr).Contains(x.Nbr)).ToList();
+            workOrds = workOrds.OrderBy(p => p.Priority).ToList();
+            //记录工单数据
+            List<WorkPriorityDto> dbWorkOrds = workOrds.Select(p => new WorkPriorityDto
+            {
+                WorkOrd = p.WorkOrd,
+                Priority = p.Priority,
+                QtyOrded = p.QtyOrded
+            }).ToList();
+            //处理工单优先级:正常投产工单优先级最高,其次是前处理状态为部分完成/全部完成,其他按照工单优先级排
+            decimal ytc = 1m;
+            decimal ktc = 10000m;
+            decimal bktc = 20000m;
+            for (int i = 0; i < workOrds.Count; i++)
+            {
+                //正在投产
+                if (!string.IsNullOrEmpty(workOrds[i].Status) && workOrds[i].Status.ToUpper() == "W")
+                {
+                    workOrds[i].Priority = ytc;
+                    ytc++;
+                    continue;
+                }
+                //需要前处理的领料单
+                var qclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType == "PrevProcess");
+                //不需要前处理的领料单
+                var bqclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType != "PrevProcess");
+                List<NbrDetail> bqclNbrDtls = new List<NbrDetail>();
+                if (bqclNbr != null)
+                {
+                    bqclNbrDtls = nbrDtlLists.Where(p => p.Nbr == bqclNbr.Nbr).ToList();
+                }
+                //存在领料单:不需要前处理-领料单明细存在已关闭物料,需要前处理-状态为部分完成或者全部完成
+                if (qclNbr != null && bqclNbr != null)
+                {
+                    //if ((qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed") && bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
+                    //{
+                    //    workOrds[i].Priority = ktc;
+                    //    ktc++;
+                    //    continue;
+                    //}
+                    workOrds[i].Priority = ktc;//bktc;
+                    bktc++;
+                    continue;
+                }
+                if (qclNbr != null && bqclNbr == null)
+                {
+                    //if (qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed")
+                    //{
+                    //    workOrds[i].Priority = ktc;
+                    //    ktc++;
+                    //    continue;
+                    //}
+                    workOrds[i].Priority = ktc;//bktc;
+                    bktc++;
+                    continue;
+                }
+                if (qclNbr == null && bqclNbr != null)
+                {
+                    //if (bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
+                    //{
+                    //    workOrds[i].Priority = ktc;
+                    //    ktc++;
+                    //    continue;
+                    //}
+                    //workOrds[i].Priority = bktc;
+                    //bktc++;
+                    //continue;
+                    workOrds[i].Priority = ktc;
+                    ktc++;
+                    continue;
+                }
+                if (qclNbr == null && bqclNbr == null)
+                {
+                    workOrds[i].Priority = bktc;
+                    bktc++;
+                    continue;
+                }
+            }
+            //按照优先级排序
+            workOrds = workOrds.OrderBy(p => p.Priority).ToList();
             var morders = _mysql_mes_morder.GetListAsync(p => workOrds.Select(x => x.WorkOrd).ToList().Contains(p.morder_no) && !p.IsDeleted && p.factory_id.ToString() == domain).Result;
             var rtn = await OrderKittingCheck(morders, false, null, true, workOrds);
             if (workOrds.Any())
             {
                 workOrds = workOrds.Where(w => w.LocationStock + w.OpQtyCompleted > 0).ToList();
-                await _productionScheduleAppService.DoProductSchedule(startTime, workOrds, domain, 2);
+                await _productionScheduleAppService.DoProductSchedule(startTime, workOrds, domain, 2, dbWorkOrds);
             }
             return "OK";
         }

+ 98 - 54
MicroServices/Business/Business.Host/Controllers/JavaScript.js

@@ -1,57 +1,101 @@
 debugger;
-let filename = this.formData['field_1701071916854'];
-var newrow = "";
-var arr = [];
-console.log(filename);
-ajax.post('/Think/excelImport', qs.stringify({
-    filename: filename,
-    headerRows: 3,
-    hashead: 0,
-    cols: "",
-    sheetnum: ""
-})).then((res) => {
-    console.log(res);
-    this.formData['subtable_1678085442815'] = [];
-    let myArray = [];
-    let k = 0;
-    for (var i = 0; i < res.data.rows.length; i++) {
-        if (res.data.rows[i].A1 != "") {
-            k++;
-            console.log(res.data.rows[i].A1);
-            let b = utils.createGuid(false);
-            let scrqyear = (new Date(res.data.rows[i].A11)).getFullYear();
-            if (scrqyear.toString().length > 4) if (confirm("生产日期格式错误")) continue;
-            newrow = '{"key":"' + b
-            newrow = newrow + '","sh_material_code": "' + res.data.rows[i].A4;
-            newrow = newrow + '","sh_material_name": "' + res.data.rows[i].A5;
-            newrow = newrow + '","th": "' + res.data.rows[i].A6;
-            newrow = newrow + '","bbh": "' + res.data.rows[i].A7;
-            newrow = newrow + '","sh_material_dw": "' + res.data.rows[i].A10;
-            newrow = newrow + '","sh_delivery_quantity": "' + res.data.rows[i].A8;
-            newrow = newrow + '","bzsl": "' + res.data.rows[i].A9;
-            if (res.data.rows[i].A9 == 0 || res.data.rows[i].A9 == null) {
-                newrow = newrow + '","bqsl": "1';
-            }
-            else {
-                newrow = newrow + '","bqsl": "' + (Math.ceil((parseFloat(res.data.rows[i].A8) / parseFloat(res.data.rows[i].A9)).toFixed(4)));
-            }
-            newrow = newrow + '","order_type": "' + res.data.rows[i].A3;
-            let sql = `SELECT count(*) as num from PurOrdDetail where purord='${res.data.rows[i].A1}' and ItemNum='${res.data.rows[i].A4}' and line=${res.data.rows[i].A2}`;
-            let res1 = utils.getSelectvalue2("dopflow", sql, sysConfig['SERVER_APIADDRESS']);
-            if (res1.data <= 0) {
-                if (confirm("采购明细不存在")) continue;
-            }
-            newrow = newrow + '","po_bill": "' + res.data.rows[i].A1;
-            newrow = newrow + '","po_billline": "' + res.data.rows[i].A2;
-            newrow = newrow + '","djsl": "' + res.data.rows[i].A13;
-            newrow = newrow + '","remarks": "' + res.data.rows[i].A15;
-            newrow = newrow + '","scrq": "' + res.data.rows[i].A11;
-            newrow = newrow + '","scph": "' + res.data.rows[i].A12.trim();
-            newrow = newrow + '","jhdbh": "' + res.data.rows[i].A14;
-            newrow = newrow + '","hh": "' + k;
-            newrow = newrow + '"  }'
-            console.log(newrow);
-            this.formData['subtable_1678085442815'].push(JSON.parse(newrow));
+//let id = "{Get<id>}";
+let instanceid = "{Get<instanceid>}";
+//const recid = this.formData['productionrecordchange-id'];
+const userno = '{<UserAccount>}';
+const curtime = '{<ShortDateTimeSecond>}';
+let glid = this.formData['productionrecordchange-glid'] || "";
+if (glid == "") {
+    glid = '{Get<glid>}';
+    this.formData['productionrecordchange-glid'] = glid;
+}
+this.linkageAddChilds('', 'productionrecordchange-typed', 'sql', `select 'A'+cast(id as varchar(50)),Record_name from qms_ebr_production_records_sonlist where Associated_ID='${glid}' union all select 'B'+cast(id as varchar(50)),Record_Name from qms_ebr_fqc_records_sonlist where Associated_ID='${glid}'`, '', glid);
+if (instanceid == undefined || instanceid == "") {
+    this.formData['productionrecordchange-create_by'] = userno;
+    this.formData['productionrecordchange-create_time'] = curtime;
+    let sql = `select pch_show,a.WorkOrd,a.ItemNum,b.batch from qms_ebr_Production_Record_List a left join workordmaster b on a.workord=b.workord where a.id='${glid}'`;
+    utils.getSelect("dopbiz", sql).then((res3) => {
+        if (res3.data && res3.data.rows.length > 0) {
+            let rows = res3.data.rows[0];
+            this.formData['productionrecordchange-itemnum'] = rows.ItemNum;
+            this.formData['productionrecordchange-workord'] = rows.WorkOrd;
+            this.formData['productionrecordchange-lotserial'] = rows.pch_show;
+            this.formData['productionrecordchange-batch'] = rows.batch;
         }
+    });
+}
+this.formValidate = function () {
+    let msg = "";
+    var value = this.formData['productionrecordchange-typed'] || "";
+    if (value == undefined || value == "") {
+        msg += ",单据类型";
     }
-}).catch(() => { });  
+    var lotserial = this.formData['productionrecordchange-lotserial'] || "";
+    if (lotserial == undefined || lotserial == "") {
+        msg += ",生产批号";
+    }
+    var reason = this.formData['productionrecordchange-reason'] || "";
+    if (reason == undefined || reason == "") {
+        msg += ",变更原因";
+    }
+    var old = this.formData['productionrecordchange-old'] || "";
+    if (old == undefined || old == "") {
+        msg += ",变更前内容";
+    }
+    var pnew = this.formData['productionrecordchange-new'] || "";
+    if (pnew == undefined || pnew == "") {
+        msg += ",变更后内容";
+    }
+    var batch = this.formData['productionrecordchange-batch'] || "";
+    if (batch == undefined || batch == "") {
+        msg += ",SAP工单号";
+    }
+    var text = this.getSelectTitle("productionrecordchange-typed", value).toString();
+    var workord = this.formData['productionrecordchange-workord'] || "";
+    if (workord == undefined || workord == "") {
+        //if (text.indexOf('过程检验记录') >= 0 || text.indexOf('成品编号记录表') >= 0 || text.indexOf('产品检测报告') >= 0 || text.indexOf('环氧乙烷灭菌记录') >= 0 || text.indexOf('COC报告') >= 0) {
+            //不必填
+       // } else {
+            msg += ",工单号";
+        //}
+    }
+    if (text.indexOf('工序随工单') >= 0 || text.indexOf('前处理随工单') >= 0 || text.indexOf('首件确认单') >= 0) {
+        var op = this.formData['productionrecordchange-op'] || "";
+        if (op == "") {
+            msg += ",工序号";
+        }
+    }
+    //if (text.indexOf('清场记录') >= 0) {
+        var descr = this.formData['productionrecordchange-descr'] || "";
+        var date = this.formData['productionrecordchange-date'] || "";
+        if (date == "") {
+            msg += ",记录日期";
+        }
+        if (descr == "") {
+            msg += ",工作地点";
+        }
+    //}
+    //if (text.indexOf('物料报废单') >= 0) {
+        var date = this.formData['productionrecordchange-date'] || "";
+        if (date == "") {
+            msg += ",记录日期";
+        }
+    //}
+    //if (text.indexOf('产品无菌环残') >= 0) {
+        var mjph = this.formData['productionrecordchange-mjph'] || "";
+        if (mjph == "") {
+            msg += ",灭菌批次";
+        }
+    //}
+    //if (text.indexOf('产品初始污染') >= 0) {
+        var jcno = this.formData['productionrecordchange-jcno'] || "";
+        if (jcno == "") {
+            msg += ",初始污染单号";
+        }
+    //}
+    if (msg !== "") {
+        utils.msg(`${msg.substring(1)}不能为空`, false);
+        return false;
+    }
+    return true;
+}

+ 78 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -3244,3 +3244,81 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-20T13:47:48.2198533+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-20T13:47:48.2252899+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-20T13:47:48.2274348+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:10:13.5503797+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:10:13.5873051+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:10:13.5906582+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:10:13.5922296+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:10:13.5972434+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T10:10:13.5991113+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:23:03.6280056+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:23:03.6640681+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:23:03.6669094+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:23:03.6687683+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T10:23:03.6740642+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T10:23:03.6758699+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T11:45:17.2378476+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T11:45:17.2730722+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T11:45:17.2760611+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T11:45:17.2779657+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T11:45:17.2824277+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T11:45:17.2839542+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:38:02.9865692+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:38:03.0262402+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:38:03.0297775+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:38:03.0317001+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:38:03.0362301+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T13:38:03.0385864+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:49:06.4596551+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:49:06.4995263+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:49:06.5026333+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:49:06.5045411+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:49:06.5090465+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T13:49:06.5108419+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:51:02.4242241+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:51:02.4663738+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:51:02.4696046+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:51:02.471633+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:51:02.4764913+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T13:51:02.4791613+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:58:33.4009503+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:58:33.4407724+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:58:33.4442279+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:58:33.445818+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T13:58:33.45072+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T13:58:33.452924+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:05:29.792831+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:05:29.8370662+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:05:29.8407242+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:05:29.8427667+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:05:29.8484233+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T14:05:29.8502977+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:29:09.9834427+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:29:10.0257264+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:29:10.0294544+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:29:10.0314121+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:29:10.0366116+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T14:29:10.0386051+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:46:12.3679297+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:46:12.4055149+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:46:12.4085769+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:46:12.4107934+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T14:46:12.416386+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T14:46:12.4187933+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:05:39.4330987+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:05:39.4758535+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:05:39.4789294+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:05:39.480734+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:05:39.485209+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T15:05:39.4876784+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:44:05.6791146+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:44:05.7137143+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:44:05.7164769+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:44:05.7178275+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:44:05.7226064+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T15:44:05.7252011+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:51:56.8179651+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:51:56.8537009+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:51:56.8571812+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:51:56.8588544+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-05-21T15:51:56.8641754+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-05-21T15:51:56.8664939+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}