/// <summary> /// 将线材修改为与NC一致,验证NC批号与组批线材批号是否一致 /// </summary> private void UpdateBatchSameToNc( string lineCode, string stlGrd, string stdCode, string sepc, string batchNo, string mtrlCode, string zldj, string bzyq, List <Mod_TRC_ROLL_PRODCUT> batchInfos) { // 验证NC线材批号与组批批号是否一致,如果不一致则要求先修改批号后再上传NC var ncDatas = new Dal_TMO_ORDER().GetNCInventory( lineCode, //zpInfo.InventoryCode, stlGrd, //order.C_STL_GRD, stdCode, //order.C_STD_CODE, sepc, //order.C_SPEC, batchNo //zpInfo.CBatchNo ).Where(w => w.MtrlCode == mtrlCode && //zpInfo.MtrlCode && w.ZLDJ == zldj //zpInfo.ZLDJ ).Where(w => w.BZYQ == bzyq).ToList(); // 如果nc不存在 if (ncDatas.Any() == false) { throw new Exception("NC不存在组批线材批号"); } // 如果与NC批号一致,不处理 if (ncDatas.Exists(w => w.BatchNo == batchNo)) { return; } var newBatchNo = ncDatas.Select(w => w.BatchNo).FirstOrDefault(); // 更新线材批号 foreach (var item in batchInfos) { // 更新线材批号 string updateSql = $"UPDATE TRC_ROLL_PRODCUT SET C_BATCH_NO = '{newBatchNo}' WHERE C_ID='{item.C_ID}'"; DbHelperOra.ExecuteSql(updateSql); item.C_BATCH_NO = newBatchNo; } }
/// <summary> /// 检测每条订单是否低毛利 /// </summary> /// <param name="orderID">订单ID</param> /// <param name="date">合同生效起始日期</param> /// <returns></returns> public bool CheckMAOLI(string orderID, string matCode, string date) { Dal_TMO_ORDER dal = new Dal_TMO_ORDER(); Mod_TMO_ORDER mod = dal.GetModel(orderID); ArrayList arraySql = new ArrayList(); bool result = true; string strSql = $@"SELECT T.C_MAT_GROUP_CODE,T.C_SPEC, T.N_THK,NVL(A.C_FLAG,'N')C_FLAG FROM TB_MATRL_MAIN T LEFT JOIN TMB_MONI_STLGRD A ON A.C_STL_GRD = T.C_STL_GRD WHERE T.C_MAT_CODE = '{matCode}'"; DataRow dr = DbHelperOra.GetDataRow(strSql); if (dr != null) { string flag = dr["C_FLAG"].ToString() == "N" ? "01" : "02"; //判定是否监控钢种标识 string matgroupcode = dr["C_MAT_GROUP_CODE"].ToString(); //钢种物料组编码 decimal num = 0; //监控钢种260,其他50 decimal maoli = Convert.ToDecimal(mod.N_PROFIT); //毛利 string spec = dr["N_THK"].ToString(); //规格 //监控钢种260,其他50 string strSql2 = $"SELECT T.C_INDEX FROM TS_DIC T WHERE T.C_TYPECODE='MAOLI' AND T.C_DETAILCODE='{flag}'"; DataRow dr2 = DbHelperOra.GetDataRow(strSql2); if (dr2 != null) { num = Convert.ToDecimal(dr2["C_INDEX"]); } if (maoli < num)//订单毛利低于配置毛利进行检测 { result = GetCheckMAOLI(date, matgroupcode, spec, matCode); } } return(result); }