/// <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;
            }
        }
Esempio n. 2
0
        /// <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);
        }