yangle
2023-07-10 e6c52d6d7b674edad782b5579148765cd89b88c4
日计划导入销售订单号
3个文件已修改
168 ■■■■■ 已修改文件
WebAPI/Controllers/MateOutController.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/SCGL/日计划管理/JIT_DayPlanPlatFormBillController.cs 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/SCGL/日计划管理/JIT_DayPlanPlatFormImportController.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/MateOutController.cs
@@ -1616,6 +1616,87 @@
        #endregion
        #region  (生产订单维度)客户订单报表
        [Route("MaterOutEntryReport/sc_ICOMReportList")]
        [HttpGet]
        public object sc_ICOMReportList(string sWhere)
        {
            try
            {
                string sql = "exec h_p_sc_ICOMReport '"+ sWhere + "'";
                ds = oCN.RunProcReturn(sql, "h_p_sc_ICOMReport");
                DataTable dt = ds.Tables[0];
                //获取列名
                List<object> columnNameList = new List<object>();
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.list = columnNameList;
                objJsonResult.data = dt;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region  å®¢æˆ·è®¢å•明细报表
        [Route("MaterOutEntryReport/Sc_ICOMProBarCodeReport")]
        [HttpGet]
        public object Sc_ICOMProBarCodeReport(string sWhere)
        {
            try
            {
                string sql = "select * from  h_v_sc_ICOMProBarCodeReport where 1=1  " + sWhere;
                ds = oCN.RunProcReturn(sql, "h_v_sc_ICOMProBarCodeReport");
                DataTable dt = ds.Tables[0];
                //获取列名
                List<object> columnNameList = new List<object>();
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.list = columnNameList;
                objJsonResult.data = dt;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
WebAPI/Controllers/SCGL/Èռƻ®¹ÜÀí/JIT_DayPlanPlatFormBillController.cs
@@ -776,8 +776,11 @@
                //取应发数量 FMustQty ä¸è¦å–值需求数量FNeedQty é¢†æ–™æ•°æ®
                string LLsql = string.Format(@"exec h_p_jit_PPBOMList '{0}'", fDayPlanFids);
                List<DayPlanPickedModel> DayPlanPickedModel = new List<DayPlanPickedModel>();
                LogService.Write("LLsql:" + LLsql);
                ds = oCN.RunProcReturn(LLsql, "SC_WORKBILLSORTBILLMAIN");
                LogService.Write(JsonConvert.SerializeObject(ds));
                DayPlanPickedModel = ds.ToModelList<DayPlanPickedModel>();
                LogService.Write(JsonConvert.SerializeObject(DayPlanPickedModel));
                //CompleteAnalysisTempModel ç”¨äºŽå­˜å‚¨ä¸´æ—¶éœ€è¦æ’入数据
                List<CompleteAnalysisTempModel> completeAnalysisTempModel = new List<CompleteAnalysisTempModel>();
                //创建字典 ç”¨äºŽå‚¨å­˜ç‰©æ–™ + å ç”¨æ•°é‡
@@ -786,8 +789,11 @@
                LogService.Write($"齐套分析,数据准备阶段,用时" + sw.Elapsed + "总需要循环的bom数量:" + DatePlanList.Count);
                //第一个循环 æ—¥è®¡åˆ’工单明细 ä¸€å¤©+一个工单 ä¸€ä¸ªå¾ªçޝ
                int o = 0;
                foreach (var item in DatePlanList)
                {
                    o++;
                    LogService.Write("循环:" + o);
                    //日计划用料清单明细 æ¯ä¸€å¤©çš„实际用料情况
                    var _BomList = BomList.Where(x => x.HMasterDate == item.HMasterDate && x.HICMOEntryID_Sec == item.HICMOEntryID_Sec).ToList();
                    //每一个物料进行库存计算
@@ -823,8 +829,9 @@
                        decimal planNeed = _item.PlanCount; //不参与计算 ç”¨äºŽè®°å½•
                        decimal need = _item.PlanCount;//参与计算
                        decimal FOccupyPickedCount = 0;//占用领料单数量
                        //找到领用数量
                                                       //找到领用数量
                        var _DayPlanPickedModel = DayPlanPickedModel.Where(c => c.FPRDMOENTYID == _item.HICMOEntryID_Sec && c.FMATERIALID == _item.FMATERIALID2).FirstOrDefault();
                        if (_DayPlanPickedModel.FRemainPickedQty >= need)
                        {
                            //领料数量满足了当前这个需求量 ç›´æŽ¥é½å¥— ä¸éœ€è¦åŽ»å ç”¨ä»“åº“
@@ -855,19 +862,24 @@
                            });
                            //扣除剩余可用领料数量
                            _DayPlanPickedModel.FRemainPickedQty -= need;
                            LogService.Write($"h" + need);
                            //循环下一个物料
                            continue;
                        }
                        else
                        {
                            LogService.Write($"kxs" + need);
                            need -= _DayPlanPickedModel.FRemainPickedQty; //剩余需求数量
                            LogService.Write($"i1" + need);
                            FOccupyPickedCount = _DayPlanPickedModel.FRemainPickedQty;
                            _DayPlanPickedModel.FRemainPickedQty = 0;
                            LogService.Write($"i" + need);
                        }
                        if (_pRD_WorkHouseCompar.Count > 0)
                        {
                            //缺料数量 éœ€æ±‚数量 - å®žé™…库存  >0 ? ä¸€ä¸ªç‰©æ–™ä¸ç®¡å ç”¨å¤šå°‘条 åº“å­˜+货主 æ•°æ® ç¼ºæ–™æ•°é‡æ˜¯åŒä¸€ä¸ªæ•°é‡
                            decimal _fLackCount = need > jskcQty ? (need - jskcQty) : 0;
                            LogService.Write($"j" + _fLackCount);
                            //LogHelper.Info("组织:" + _item.FStockOrgId + " ,及时库存" + jskcQty);
                            //总库存为0了 ç›´æŽ¥ç»™å‡º ç¼ºæ–™æ•°é‡
                            if (jskcQty == 0)
@@ -900,6 +912,8 @@
                                //终止该物料计算 è¿›å…¥ä¸‹ä¸€ä¸ª
                                continue;
                            }
                            LogService.Write($"k" + 2);
                            foreach (var WorkHouse in _pRD_WorkHouseCompar)
                            {
                                //库存数据匹配
@@ -1574,7 +1588,9 @@
                List<PODemandPlanTemp> PODemandPlanTemp = new List<PODemandPlanTemp>();
                //sql集合 æ›´æ–°é‡‡è´­è®¢å•占用的提料计划数量
                List<string> sqlList = new List<string>();
                string Error = "运算失败!";
                LogService.Write("1");
                string Error = "";
                foreach (var item in MaterialIDList)
                {
                    //当前物料没有采购订单时 ç›´æŽ¥è·³å‡º
@@ -1584,6 +1600,9 @@
                        Error+="[提料计划开始]当前物料无采购信息:" + item.FNumber + " åº“存组织:" + item.FStockOrgName + "      ";
                        continue;
                    }
                    LogService.Write("1.1");
                    ////LogHelper.Info(item.FMATERIALID.ToString());
                    //当前物料和库存组织对应的需进行提料计划的数据    
                    List<DayPlanPpbom> _DayPlanPpbom = DayPlanPpbom.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId).ToList();
@@ -1597,6 +1616,9 @@
                    DateTime DATE = _DayPlanPpbom.FirstOrDefault().FHMASTERDATE;//第一个订货起始日期
                    int i = 0;
                    //记录在最小采购量需求下的日计划明细FentyrID
                    LogService.Write("1.2");
                    List<int> FEntryIdList = new List<int>();
                    foreach (var _item in _DayPlanPpbom)
                    {
@@ -1607,13 +1629,25 @@
                            break;
                        }
                        LogService.Write("1.2.1");
                        if (NeedQty == 0)
                        {
                            DATE = Convert.ToDateTime(_item.FHMASTERDATE).AddDays(-FFIXLEADTIME);
                        }
                        FEntryIdList.Add(_item.FENTRYID);
                        NeedQty += _item.NeedQty;
                        if ((FJITmaterialGroup == "总量控制规格类" || FJITmaterialGroup == "订单专用个性类") && FEntryIdList.Count < Convert.ToInt32(FJITMaterielDemand) && i < _DayPlanPpbom.Count) //订单专用个性类
                        //LogService.Write(FJITmaterialGroup);
                        //LogService.Write(FEntryIdList.Count);
                        //LogService.Write(Convert.ToDouble(FJITMaterielDemand));
                        //LogService.Write(_DayPlanPpbom.Count);
                        //LogService.Write(i);
                        if ((FJITmaterialGroup == "总量控制规格类" || FJITmaterialGroup == "订单专用个性类") && FEntryIdList.Count < Convert.ToDouble(FJITMaterielDemand) && i < _DayPlanPpbom.Count) //订单专用个性类
                        {
                            continue;
                        }
                        LogService.Write("1.2.2");
                        foreach (var Purchase in _PurchaseInventory)
                        {
@@ -1657,6 +1691,9 @@
                                    //扣除日计划明细已被分配的数量
                                    DayPlanPpbomls.NeedQty = 0;
                                }
                                LogService.Write("1.2.3");
                                FEntryIdList.Clear();
                                //更新采购订单
                                //sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount  =isnull(FPODemandPlanCount,0)+  '{NeedQty}' where FENTRYID = {Purchase.FENTRYID}");
@@ -1733,17 +1770,22 @@
                                }
                            }
                        }
                        LogService.Write("1.2.4");
                        NeedQty = 0;
                    }
                }
                //var PODemandPlanList222 = PODemandPlanTemp.GroupBy(p => new PODemandPlanTemp { PurchseFNUMBER = p.PurchseFNUMBER, FHMASTERDATE = p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList();
                var PODemandPlanList = PODemandPlanTemp.GroupBy(p => new { p.PurchseFNUMBER, p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList();
                //LogHelper.Info($"提料计划,数据准备完成,保存到Model实体,总行数:{PODemandPlanTemp.Count}");
                int tlmmm = 0;
                JArray FinalyResult = new JArray();
                LogService.Write("2");
                foreach (var item in PODemandPlanList)
                {
                    tlmmm++;
@@ -1915,12 +1957,22 @@
                    //    tlmmm++;
                }
                if (tlmmm == PODemandPlanList.Count && tlmmm != 0)
                LogService.Write("3");
                if (Error != "")
                {
                    oCN.Commit();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "运算成功!" + Error;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else if (tlmmm == PODemandPlanList.Count && tlmmm != 0)
                {
                    oCN.Commit();
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "运算成功!";
                    objJsonResult.Message = "运算成功!" + Error;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1929,7 +1981,7 @@
                    oCN.RollBack();//事务回滚
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = Error;
                    objJsonResult.Message = "运算失败!" + Error;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -1938,11 +1990,11 @@
                //////LogHelper.Info("提料计划执行完成,运行总时长:" + sw.Elapsed);
                //DBServiceHelper.ExecuteBatch(Context, sqlList);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "提料运算成功!";
                objJsonResult.data = null;
                return objJsonResult;
                //objJsonResult.code = "1";
                //objJsonResult.count = 1;
                //objJsonResult.Message = "提料运算成功!";
                //objJsonResult.data = null;
                //return objJsonResult;
            }
            catch (Exception e)
            {
WebAPI/Controllers/SCGL/Èռƻ®¹ÜÀí/JIT_DayPlanPlatFormImportController.cs
@@ -61,6 +61,7 @@
                tb2.Columns.Add("ICMOBillHInterID", typeof(Int32));//生产订单主id
                tb2.Columns.Add("ICMOBillHEntryID", typeof(Int32));//生产订单子id
                tb2.Columns.Add("HProdORGID", typeof(Int32));//组织id
                tb2.Columns.Add("HSeOrderBillNo", typeof(string));//销售订单号
                //添加数据
                for (int i = 1; i < ExcelDs.Tables[0].Rows.Count; i++)
@@ -128,6 +129,7 @@
                        tb2.Rows[i]["ICMOBillHInterID"] = ds.Tables[0].Rows[0]["hmainid"].ToString();//生产订单主id
                        tb2.Rows[i]["ICMOBillHEntryID"] = ds.Tables[0].Rows[0]["HEntryID"].ToString();//生产订单子id
                        tb2.Rows[i]["生产订单数量"] = ds.Tables[0].Rows[0]["生产任务单数量"].ToString();//生产订单数量
                        tb2.Rows[i]["HSeOrderBillNo"] = ds.Tables[0].Rows[0]["销售订单号"].ToString();//销售订单号
                    }
                    ds = oCN.RunProcReturn("select * from h_v_JIT_Sc_WorkBillSortBillList " +
@@ -322,6 +324,7 @@
                        var HDate = omdelMian.HDate;
                        var HMainSourceInterID = list[i]["ICMOBillHInterID"].ToString();
                        var HMainSourceEntryID = list[i]["ICMOBillHEntryID"].ToString();
                        var HSeOrderBillNo = list[i]["HSeOrderBillNo"].ToString();
                        ds = oCN.RunProcReturn($"select * from  Sc_WorkBillSortBillMain where HMainSourceInterID={HMainSourceInterID}" +
                          $" and HMainSourceEntryID={HMainSourceEntryID} and HICMOBillNo='{HICMOBillNo}' and HICMOEntrySEQ={HICMOEntrySEQ} and HSourceID={HSourceID}", "Sc_WorkBillSortBillMain");
@@ -340,13 +343,15 @@
                            "HICMOEntrySEQ,HWorkShopID,HSourceID, HYX, HEmpID," +
                            " HMaterID, HMaterName, HMaterModel, HUnitID, HBatchNo," +
                            " HSeOrderBillQty, HPlanQty, HCompleteQty,HPreparatDate," +
                            "HMainSourceInterID,HMainSourceEntryID,HProdORGID,HICMOInterID_Sec,HICMOEntryID_Sec)values" +
                            "HMainSourceInterID,HMainSourceEntryID,HProdORGID,HICMOInterID_Sec,HICMOEntryID_Sec" +
                            ",HSeOrderBillNo)values" +
                            $"({HInterID},'{HBillNo}',{DateTime.Now.Year},{DateTime.Now.Month},'{BillType}'," +
                            $"'{BillType}',GETDATE(),1,'{user}','{HDate}','{HICMOBillNo}','{HOrderType}'," +
                            $"{(HICMOEntrySEQ == "" ? 0.ToString() : HICMOEntrySEQ)},{(HWorkShopID == "" ? 0.ToString() : HWorkShopID)},{(HSourceID == "" ? 0.ToString() : HSourceID)}, {(HYX == "" ? 0.ToString() : HYX)}, {(HEmpID == "" ? 0.ToString() : HEmpID)}," +
                            $" {(HMaterID == "" ? 0.ToString() : HMaterID)}, '{HMaterName}', '{HMaterModel}', {(HUnitID == "" ? 0.ToString() : HUnitID)}, '{HBatchNo}'," +
                            $" {(HSeOrderBillQty == "" ? 0.ToString() : HSeOrderBillQty)}, {(HPlanQty == "" ? 0.ToString() : HPlanQty)}, {(HCompleteQty == "" ? 0.ToString() : HCompleteQty)},getdate()," +
                            $" {HMainSourceInterID},{HMainSourceEntryID},{HProdORGID}, {HMainSourceInterID},{HMainSourceEntryID})");
                            $" {HMainSourceInterID},{HMainSourceEntryID},{HProdORGID}, {HMainSourceInterID},{HMainSourceEntryID}" +
                            $",'{HSeOrderBillNo}')");
                    }
                    int SumDay = 31; //动态两月之差 DateTime.Now.AddMonths(1).AddDays(-1).Subtract(DateTime.Now).Days;