Пример #1
0
        /// <summary>
        /// 获取物料明细信息。
        /// </summary>
        /// <param name="sapOperation">SAP工作中心名称,多个工作中心使用逗号分割。C1,C2...</param>
        /// <param name="storeNameList">线上仓名称,多个线上仓使用逗号分割。store1,store2..</param>
        /// <returns>
        /// 包含物料明细信息的数据集对象。
        /// 【W.SAP_ISSURE_KEY,ROWNUM,W.MBLNR, W.MATNR,W.CHARG, W.MATXT, W.AUFNR,W.ERFME,W.ERFMG, W.LLIEF,B.WORK_CENTER】
        /// </returns>
        public DataSet GetMaterialDetail(string sapOperation, string storeNameList)
        {
            string  msg      = string.Empty;
            DataSet dsReturn = new DataSet();

            try
            {
                string sSapOperation  = UtilHelper.BuilderWhereConditionString("B.WORK_CENTER", sapOperation.Split(','));
                string sStoreNameList = UtilHelper.BuilderWhereConditionString(" D.STORE_NAME", storeNameList.Split(','));

                string sql = string.Format(@"SELECT TOP 10 ROW_NUMBER() OVER(ORDER BY W.CHARG) ROWNUM,W.SAP_ISSURE_KEY,W.MBLNR,W.MATNR,W.CHARG,W.MATXT,W.AUFNR,W.ERFME,W.ERFMG,W.LLIEF,B.WORK_CENTER
                                            FROM WST_SAP_ISSURE W
                                            JOIN POR_WORK_ORDER A ON A.ORDER_NUMBER=W.AUFNR
                                            JOIN POR_WORK_ORDER_BOM B ON W.MATNR = B.MATERIAL_CODE AND W.AUFNR = B.ORDER_NUMBER
                                            WHERE W.ISRECEIVED = '0'
                                            AND A.FACTORY_NAME IN (SELECT DISTINCT E.FACTORY_NAME
                                                                   FROM WST_STORE D
                                                                   LEFT JOIN V_LOCATION E ON D.LOCATION_KEY = E.ROOM_KEY
                                                                   WHERE 1=1 {1})",
                                           sSapOperation,
                                           sStoreNameList);
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                LogService.LogError(string.Format("GetMaterialDetail Error:{0}", ex.Message));
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, msg);
            }
            return(dsReturn);
        }
Пример #2
0
        /// <summary>
        /// 根据线边仓名称获取车间名称和主键。
        /// </summary>
        /// <param name="STORES">用户拥有权限的线边仓名称,使用逗号分隔:store1,store2...</param>
        /// <returns>包含车间名称和车间主键的数据集对象。</returns>
        public DataSet GetWorkShopInfo(string stores)
        {
            DataSet dsReturn = new DataSet();

            try
            {
                string sql = "";
                //线边仓名称长度>0,即方法参数传入了线边仓名称。
                if (stores.Length > 0)
                {
                    sql = @"SELECT DISTINCT V.PARENT_KEY,V.PARENT_NAME 
                            FROM V_LOCATION_RET V,WST_STORE S 
                            WHERE S.LOCATION_KEY = V.LOCATION_KEY";
                    string sqlCondition = UtilHelper.BuilderWhereConditionString("STORE_NAME", stores.Split(','));
                    sql += sqlCondition;
                }
                else//如果没有传入线边仓名称。
                {
                    sql = @"SELECT DISTINCT V.PARENT_KEY,V.PARENT_NAME 
                            FROM V_LOCATION_RET V,WST_STORE S 
                            WHERE S.LOCATION_KEY = V.LOCATION_KEY";
                }
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetWorkShopInfo Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #3
0
        /// <summary>
        /// 根据线别数据获取线别所属的车间。
        /// </summary>
        /// <param name="lines">使用逗号分开的所有线别值。</param>
        /// <returns>
        /// 包含工厂车间信息的数据集对象。
        /// 【LOCATION_KEY,LOCATION_NAME】。
        /// </returns>
        public DataSet GetFactoryRoomByLines(string lines)
        {
            DataSet resDS = new DataSet();

            try
            {
                string sqlCondition = UtilHelper.BuilderWhereConditionString("c.LINE_NAME", lines.Split(','));
                string sqlString    = @"SELECT DISTINCT PARENT_KEY  as LOCATION_KEY,PARENT_NAME  as LOCATION_NAME
                                    FROM V_LOCATION_RET a,FMM_LOCATION_LINE b,FMM_PRODUCTION_LINE c
                                    WHERE a.LOCATION_KEY=b.LOCATION_KEY 
                                    AND b.LINE_KEY=c.PRODUCTION_LINE_KEY
                                    AND LOCATION_LEVEL=9"
                                      + sqlCondition +
                                      "ORDER BY a.PARENT_NAME ASC";
                db.LoadDataSet(CommandType.Text, sqlString, resDS, new string[] { FMM_LOCATION_FIELDS.DATABASE_TABLE_NAME });

                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(resDS, string.Empty);
            }
            catch (Exception ex)
            {
                LogService.LogError("GetAllLoactions Error: " + ex.Message);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(resDS, ex.Message);
            }

            return(resDS);
        }
Пример #4
0
        /// <summary>
        /// 通过工序和车间主键获取线上仓。
        /// </summary>
        /// <param name="operation">工序名称,</param>
        /// <param name="roomKey">车间主键,</param>
        /// <param name="stores">拥有权限的线上仓名称,使用逗号分隔store1,store2...。</param>
        /// <returns>包含线上仓的数据集对象。</returns>
        public DataSet GetStores(string operation, string roomKey, string stores)
        {
            string  msg      = string.Empty;
            DataSet dsReturn = new DataSet();

            try
            {
                string condition = UtilHelper.BuilderWhereConditionString("STORE_NAME", stores.Split(','));
                string sql       = string.Format(@"SELECT STORE_KEY,STORE_NAME 
                                            FROM WST_STORE 
                                            WHERE OPERATION_NAME='{0}' 
                                            AND OBJECT_STATUS=1 
                                            AND LOCATION_KEY='{1}'
                                            {2}",
                                                 operation.PreventSQLInjection(),
                                                 roomKey.PreventSQLInjection(),
                                                 condition);
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, msg);
                LogService.LogError(string.Format("GetStores Error:{0}", ex.Message));
            }
            return(dsReturn);
        }
Пример #5
0
        /// <summary>
        /// 根据线上仓数据获取所属的车间。
        /// </summary>
        /// <param name="lines">使用逗号分开的所有线上仓名称。</param>
        /// <returns>
        /// 包含工厂车间信息的数据集对象。
        /// 【LOCATION_KEY,LOCATION_NAME】
        /// </returns>
        public DataSet GetFactoryRoomByStores(string stores)
        {
            DataSet resDS = new DataSet();

            try
            {
                string sqlCondition = UtilHelper.BuilderWhereConditionString("a.STORE_NAME", stores.Split(','));
                string sqlString    = @"SELECT DISTINCT b.PARENT_KEY as LOCATION_KEY,b.LOCATION_NAME
                                    FROM WST_STORE a,
                                        (SELECT LOCATION_KEY,LOCATION_KEY PARENT_KEY,LOCATION_NAME
                                        FROM V_LOCATION_RET
                                        WHERE LOCATION_LEVEL=5
                                        UNION 
                                        SELECT LOCATION_KEY,PARENT_KEY,PARENT_NAME LOCATION_NAME
                                        FROM V_LOCATION_RET
                                        WHERE LOCATION_LEVEL=9) b
                                    WHERE a.LOCATION_KEY=b.LOCATION_KEY"
                                      + sqlCondition +
                                      "ORDER BY b.LOCATION_NAME ASC";
                db.LoadDataSet(CommandType.Text, sqlString, resDS, new string[] { FMM_LOCATION_FIELDS.DATABASE_TABLE_NAME });

                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(resDS, string.Empty);
            }
            catch (Exception ex)
            {
                LogService.LogError("GetFactoryRoomByStores Error: " + ex.Message);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(resDS, ex.Message);
            }

            return(resDS);
        }
Пример #6
0
        /// <summary>
        /// 根据线别名称和工厂车间主键获取线别信息。
        /// </summary>
        /// <param name="factoryRoomKey">工厂车间主键。</param>
        /// <param name="lines">可选,使用“逗号(,)”分开的线别名称字符串。“X01,X02,C01...”</param>
        /// <returns>
        /// 包含线别信息的数据集对象。
        /// [LINE_NAME,PRODUCTION_LINE_KEY,LINE_CODE,ROOM_NAME,ROOM_KEY]
        /// </returns>
        public DataSet GetLinesInfo(string factoryRoomKey, string lines)
        {
            DataSet      dsReturn     = new DataSet();
            string       sqlCondition = "";
            const string CONST_SQL    = @"SELECT distinct a.LINE_NAME,a.PRODUCTION_LINE_KEY,a.LINE_CODE,c.ROOM_NAME,c.ROOM_KEY
                                        FROM FMM_PRODUCTION_LINE a
                                        LEFT JOIN FMM_LOCATION_LINE b ON a.PRODUCTION_LINE_KEY=b.LINE_KEY
                                        LEFT JOIN V_LOCATION c ON b.LOCATION_KEY=c.AREA_KEY
                                        WHERE c.ROOM_KEY='{0}'";

            try
            {
                string sql = string.Format(CONST_SQL, factoryRoomKey.PreventSQLInjection());
                //线别名称长度>0,即方法参数传入了线别名称。
                if (!string.IsNullOrEmpty(lines))
                {
                    sqlCondition = UtilHelper.BuilderWhereConditionString("LINE_NAME", lines.Split(','));
                    sql         += sqlCondition;
                }
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetLinesInfo Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #7
0
        /// <summary>
        /// 根据线别名称获取线别信息。
        /// </summary>
        /// <param name="lines">使用“逗号(,)”分开的线别名称字符串。“X01,X02,C01...”</param>
        /// <returns>包含线别信息的数据集对象。</returns>
        public DataSet GetLinesInfo(string lines)
        {
            DataSet dsReturn     = new DataSet();
            string  sqlCondition = "";

            try
            {
                string sql = "";
                //线别名称长度>0,即方法参数传入了线别名称。
                if (lines.Length > 0)
                {
                    sql          = @"SELECT PRODUCTION_LINE_KEY,LINE_NAME,LINE_CODE FROM FMM_PRODUCTION_LINE WHERE 1=1";
                    sqlCondition = UtilHelper.BuilderWhereConditionString("LINE_NAME", lines.Split(','));
                    sql         += sqlCondition;
                }
                else//如果没有传入线别名称。
                {
                    sql = @"SELECT PRODUCTION_LINE_KEY,LINE_NAME,LINE_CODE FROM FMM_PRODUCTION_LINE WHERE LINE_NAME = ''";
                }
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetLines Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #8
0
        /// <summary>
        /// 查询在线物料明细信息。
        /// </summary>
        /// <param name="model">
        /// 包含查询条件对象。
        /// </param>
        /// <param name="storeMaterialKey">
        /// 在线物料主键
        /// </param>
        /// <returns>包含在线物料信息的数据集。</returns>
        public DataSet QueryDetail(OnlineMaterialQueryModel model, string storeMaterialKey)
        {
            DataSet       dsReturn = new DataSet();
            StringBuilder sbSql    = new StringBuilder();

            try
            {
                sbSql.Append(@"SELECT A.STORE_MATERIAL_KEY,
                                     A.MATERIAL_LOT,
                                     A.CURRENT_QTY,
                                     A.MATERIAL_SUPPLIER,
                                     D.UNIT
                            FROM WST_STORE_MATERIAL_DETAIL A 
                            LEFT JOIN WST_STORE_MATERIAL B ON A.STORE_MATERIAL_KEY=B.STORE_MATERIAL_KEY
                            LEFT JOIN WST_STORE C ON B.STORE_KEY=C.STORE_KEY
                            LEFT JOIN POR_MATERIAL D ON B.MATERIAL_KEY=D.MATERIAL_KEY
                            LEFT JOIN FMM_LOCATION E ON C.LOCATION_KEY=E.LOCATION_KEY
                            WHERE CURRENT_QTY>0 ");
                if (!string.IsNullOrEmpty(model.OperationName))
                {
                    sbSql.AppendFormat(UtilHelper.BuilderWhereConditionString("C.OPERATION_NAME", model.OperationName.Split(',')));
                }

                if (!string.IsNullOrEmpty(model.StoreName))
                {
                    sbSql.AppendFormat(UtilHelper.BuilderWhereConditionString("C.STORE_NAME", model.StoreName.Split(',')));
                }

                if (!string.IsNullOrEmpty(model.MaterialCode))
                {
                    sbSql.AppendFormat(" AND D.MATERIAL_CODE  LIKE '{0}%'", model.MaterialCode.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.MaterialLot))
                {
                    sbSql.AppendFormat(" AND A.MATERIAL_LOT  LIKE '{0}%'", model.MaterialLot.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.RoomName))
                {
                    sbSql.AppendFormat(" AND E.LOCATION_NAME  LIKE '{0}%'", model.RoomName.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.SupplierName))
                {
                    sbSql.AppendFormat(" AND A.MATERIAL_SUPPLIER  LIKE '{0}%'", model.SupplierName.PreventSQLInjection());
                }
                sbSql.AppendFormat(" AND A.STORE_MATERIAL_KEY = '{0}'", storeMaterialKey.PreventSQLInjection());
                dsReturn = this.db.ExecuteDataSet(CommandType.Text, sbSql.ToString());
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("SearchLotList Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #9
0
        //有无组柜信息查询
        public DataSet QueryInf(string _arkCode, string _status, string _palletNo)
        {
            DataSet       dsReturn = new DataSet();
            string        _arkFlag = string.Empty;
            StringBuilder sBuilder = new StringBuilder();

            try
            {
                sBuilder.Append(@"SELECT B.CONTAINER_CODE,A.PALLET_NO,A.SAP_NO,A.WORKNUMBER,B.CREATOR,B.CDATE,CASE WHEN A.ARK_FLAG ='1' THEN '已组柜' ELSE '未组柜' END AS ARK_FLAG
                                        from dbo.WIP_CONSIGNMENT A
                                        left join AWMS.dbo.AWMS_CONTAINER_DETAIL B
                                        on A.PALLET_NO = B.PALLET_NO
                                        WHERE A.ISFLAG = 1 AND A.CS_DATA_GROUP = '3'");

                if (!string.IsNullOrEmpty(_arkCode))
                {
                    sBuilder.AppendFormat(" AND B.CONTAINER_CODE = '{0}'", _arkCode.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_status))
                {
                    if (_status == "已组柜")
                    {
                        _arkFlag = "1";
                    }
                    else if (_status == "未组柜")
                    {
                        _arkFlag = "0";
                    }
                    sBuilder.AppendFormat(" AND A.ARK_FLAG  = '{0}'", _arkFlag.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_palletNo))
                {
                    string palletNo = _palletNo;
                    if (!string.IsNullOrEmpty(palletNo))
                    {
                        string palletNos = UtilHelper.BuilderWhereConditionString("A.PALLET_NO", palletNo.Split(new char[] { ',', '\n', '#' }));
                        sBuilder.AppendFormat(palletNos);
                    }
                }
                sBuilder.Append(" ORDER BY A.ARK_FLAG DESC");
                dsReturn = db.ExecuteDataSet(CommandType.Text, sBuilder.ToString());
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("QueryInf Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #10
0
        /// <summary>
        /// 获取物料耗用信息。
        /// </summary>
        /// <param name="operations">工序名称,使用逗号分隔:op1,op2...</param>
        /// <param name="stores">线上仓名称,使用逗号分隔:store1,store2...</param>
        /// <returns>包含物料耗用信息的数据集对象。</returns>
        public DataSet GetMaterialUsed(string operations, string stores)
        {
            DataSet dsReturn = new DataSet();

            try
            {
                string sql = @"  SELECT ROW_NUMBER() OVER(ORDER BY A.MATERIAL_LOT) AS ROWNUMBER,
                                        A.MATERIAL_USED_DETAIL_KEY,A.MATERIAL_USED_KEY,A.MATERIAL_LOT,A.OPERATION_KEY,A.ROUTE_OPERATION_NAME,
                                        A.LOCATION_KEY,A.LOCATION_NAME,A.EQUIPMENT_KEY,A.EQUIPMENT_NAME,A.SHIFT_NAME,A.USED_TIME,A.OPERATOR,A.MATNR,A.MATXT,A.LLIEF,
                                        A.USED_QTY,A.ERFME,A.STORE_NAME,A.STIR_TIME,A.PRINT_QTY,A.STATUS
                                 FROM 
                                        (SELECT DISTINCT W.MATERIAL_USED_DETAIL_KEY,U.MATERIAL_USED_KEY,D.MATERIAL_LOT,U.OPERATION_KEY,V.ROUTE_OPERATION_NAME,
                                                        F.LOCATION_KEY,F.LOCATION_NAME,E.EQUIPMENT_KEY,E.EQUIPMENT_NAME,U.SHIFT_NAME,U.USED_TIME,U.OPERATOR,I.MATNR,
                                                        I.MATXT,I.LLIEF,W.USED_QTY,I.ERFME,S.STORE_NAME,W.STIR_TIME,W.PRINT_QTY,W.STATUS
                                        FROM
                                            FMM_LOCATION  F,
                                            WST_STORE S,
                                            WST_STORE_MATERIAL M,
                                            WST_STORE_MATERIAL_DETAIL D,
                                            WST_SAP_ISSURE I,
                                            WST_MATERIAL_USED_DETAIL W,
                                            WST_MATERIAL_USED U,
                                            POR_ROUTE_OPERATION_VER V,
                                            EMS_EQUIPMENTS E 
                                        WHERE F.LOCATION_KEY = S.LOCATION_KEY
                                        AND S.STORE_KEY = M.STORE_KEY
                                        AND M.STORE_MATERIAL_KEY = D.STORE_MATERIAL_KEY
                                        AND D.STORE_MATERIAL_DETAIL_KEY = I.STORE_MATERIAL_DETAIL_KEY
                                        AND D.STORE_MATERIAL_DETAIL_KEY = W.STORE_MATERIAL_DETAIL_KEY
                                        AND W.MATERIAL_USED_KEY = U.MATERIAL_USED_KEY
                                        AND U.OPERATION_KEY = V.ROUTE_OPERATION_VER_KEY
                                        AND U.EQUIPMENT_KEY = E.EQUIPMENT_KEY AND STATUS!=0 ";


                string sqlConditionStore = UtilHelper.BuilderWhereConditionString("S.STORE_NAME", stores.Split(','));
                sql += sqlConditionStore;
                string sqlConditionStore1 = UtilHelper.BuilderWhereConditionString("V.ROUTE_OPERATION_NAME", operations.Split(','));
                sql     += sqlConditionStore1;
                sql     += ") A";
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetMaterialUsed Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #11
0
        /// <summary>
        /// 根据工序名(用","分开的工序名字符串),线别名(用","分开的工序名字符串),线边仓类型,班别名称查询等待返工或退库操作的批次信息。
        /// </summary>
        /// <param name="operations">工序名(用","分开的工序名字符串)</param>
        /// <param name="lines">线别名(用","分开的工序名字符串</param>
        /// <param name="storeTypes">线别仓类型。</param>
        /// <param name="shiftName">班别名称。</param>
        /// <returns>
        /// 查询得到的包含等待返工或退库操作批次信息的数据集对象。
        /// </returns>
        public DataSet SearchLotWaitingForTransact(string operations, string lines, string storeTypes, string shiftName)
        {
            DataSet dsReturn = new DataSet();

            try
            {
                string sql = @"SELECT T.WORKORDER_NUMBER,A.STORE_NAME,T.ITEM_NO,T.ITEM_QTY,B.LINE_NAME,C.ROUTE_STEP_NAME,CSD.SHIFT_VALUE
                            FROM WST_STORE_MAT T
                            INNER JOIN WST_STORE A ON T.STORE_KEY = A.STORE_KEY  
                            INNER JOIN FMM_PRODUCTION_LINE B ON T.LINE_KEY=B.PRODUCTION_LINE_KEY
                            INNER JOIN POR_ROUTE_STEP C ON T.STEP_KEY=C.ROUTE_STEP_KEY 
                            LEFT JOIN CAL_SCHEDULE_DAY CSD ON T.SHIFT_NAME=CSD.DKEY
                            WHERE A.OBJECT_STATUS = 1
                            AND A.REQUEST_FLAG=1
                            AND T.OBJECT_STATUS=0
                            AND T.DELETED_TERM_FLAG = 0";
                if (shiftName.Length > 0)
                {
                    sql += " AND CSD.SHIFT_VALUE = '" + shiftName + "'";
                }
                if (operations.Length > 0)
                {
                    string operationCondition = UtilHelper.BuilderWhereConditionString("C.ROUTE_STEP_NAME", operations.Split(','));
                    sql += operationCondition;
                }
                if (lines.Length > 0)
                {
                    string lineCondition = UtilHelper.BuilderWhereConditionString("B.LINE_NAME", lines.Split(','));
                    sql += lineCondition;
                }
                if (storeTypes.Length > 0)
                {
                    string storeCondition = UtilHelper.BuilderWhereConditionString("A.STORE_TYPE", storeTypes.Split(','));
                    sql += storeCondition;
                }

                sql     += " ORDER BY T.WORKORDER_NUMBER,A.STORE_NAME,T.ITEM_NO";
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("SearchLotWaitingForTransact Error:" + ex.Message);
            }
            return(dsReturn);
        }
Пример #12
0
        /// <summary>
        /// 获取电池片回收的可选问题工序。
        /// </summary>
        /// <param name="lotKey">回收电池片的批次主键。。</param>
        /// <param name="operations">拥有权限的工序名称,使用逗号(,)分隔。</param>
        /// <returns>包含问题工序的数据集对象。</returns>
        public DataSet GetRecoveredTroubleStepInfo(string lotKey, string operations)
        {
            DataSet dsReturn = new DataSet();

            try
            {
                StringBuilder sbSql = new StringBuilder();
                sbSql.AppendFormat(@"SELECT *
                                    FROM V_PROCESS_PLAN 
                                    WHERE ENTERPRISE_STATUS=1 AND ROUTE_STATUS=1
                                    AND ROUTE_STEP_KEY IN(
				                                    SELECT DISTINCT a.STEP_KEY
				                                    FROM WIP_PATCH a
				                                    WHERE a.PATCH_LOT_KEY='{0}'
				                                    UNION ALL
				                                    SELECT DISTINCT a.STEP_KEY
				                                    FROM WIP_SCRAP a
				                                    LEFT JOIN WIP_TRANSACTION b ON a.TRANSACTION_KEY=b.TRANSACTION_KEY
				                                    WHERE b.PIECE_KEY='{0}'
				                                    )
                                    AND ROUTE_ENTERPRISE_VER_KEY IN ( 
                                                    SELECT DISTINCT a.ENTERPRISE_KEY
                                                    FROM WIP_PATCH a
                                                    WHERE a.PATCH_LOT_KEY='{0}'
                                                    UNION ALL
                                                    SELECT DISTINCT a.ENTERPRISE_KEY
                                                    FROM WIP_SCRAP a
                                                    LEFT JOIN WIP_TRANSACTION b ON a.TRANSACTION_KEY=b.TRANSACTION_KEY
                                                    WHERE b.PIECE_KEY='{0}') ",
                                   lotKey.PreventSQLInjection());
                sbSql.Append(UtilHelper.BuilderWhereConditionString("ROUTE_STEP_NAME", operations.PreventSQLInjection().Split(',')));
                sbSql.Append(" ORDER BY ((ROUTE_SEQ+1)*10000000)+ROUTE_STEP_SEQ");
                //执行查询。
                dsReturn = db.ExecuteDataSet(CommandType.Text, sbSql.ToString());
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetTroubleStep Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #13
0
        /// <summary>
        /// 通过工单号和物料料号获取线上仓。
        /// </summary>
        /// <param name="workOrder">工单号,</param>
        /// <param name="materialCode">物料编码,</param>
        /// <param name="stores">拥有权限的线上仓名称,使用逗号分隔,store1,store2...。</param>
        ///  <returns>包含线上仓的数据集对象。</returns>
        public DataSet GetStoreByMaterialCode(string workOrder, string materialCode, string stores)
        {
            const string CONST_GET_SAP_OPERATIONS_SQL = "SELECT DISTINCT WORK_CENTER FROM POR_WORK_ORDER_BOM WHERE  ORDER_NUMBER='{0}' AND MATERIAL_CODE='{1}'";
            DataSet      dsReturn = new DataSet();

            try
            {
                //根据工单号和物料编码获取工作中心(SAP工序)
                DataSet dsSAPWorkCenter = db.ExecuteDataSet(CommandType.Text, string.Format(CONST_GET_SAP_OPERATIONS_SQL,
                                                                                            workOrder.PreventSQLInjection(),
                                                                                            materialCode.PreventSQLInjection()));
                string strSAPWorkCenter = string.Empty;
                foreach (DataRow dr in dsSAPWorkCenter.Tables[0].Rows)
                {
                    strSAPWorkCenter += "'" + dr["WORK_CENTER"].ToString().PreventSQLInjection() + "',";
                }
                strSAPWorkCenter = strSAPWorkCenter.TrimEnd(',');

                //通过WORK_CENTER获取MES工序
                DataSet   dsSAPMES     = CrmAttributeEngine.GetDistinctColumnsData(db, "WORK_CENTER,OPERATION_NAME", "SAP_MES_OPERATIONS");
                DataTable dt           = dsSAPMES.Tables[0];
                DataRow[] drs          = dt.Select("WORK_CENTER in (" + strSAPWorkCenter + ")");
                string    strOpearions = string.Empty;
                foreach (DataRow dr in drs)
                {
                    strOpearions += "'" + dr["OPERATION_NAME"].ToString().PreventSQLInjection() + "',";
                }
                strOpearions = strOpearions.TrimEnd(',');
                //通过MES工序和拥有权限的线上仓名称获取线上仓名称。
                string sql = string.Format("SELECT  STORE_NAME FROM WST_STORE WHERE OPERATION_NAME IN ({0}) AND OBJECT_STATUS=1", strOpearions);
                sql     += UtilHelper.BuilderWhereConditionString("STORE_NAME", stores.Split(','));
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError(string.Format("GetStoreByMaterialCode Error:{0}", ex.Message));
            }
            return(dsReturn);
        }
Пример #14
0
        /// <summary>
        /// 根据线上仓名称查询可用线上仓信息。
        /// </summary>
        /// <param name="storeName">线上仓名称,使用逗号(,)分隔。</param>
        /// <returns>包含重工线上仓信息的数据集对象。</returns>
        public DataSet GetReworkStore(string storeName)
        {
            DataSet dsReturn   = new DataSet();
            string  sqlCommand = string.Empty;

            try
            {
                sqlCommand = @"SELECT A.STORE_KEY,A.STORE_NAME,A.STORE_TYPE FROM WST_STORE A  WHERE 1=1 AND A.OBJECT_STATUS='1' ";
                if (!string.IsNullOrEmpty(storeName))
                {
                    sqlCommand = sqlCommand + UtilHelper.BuilderWhereConditionString("A.STORE_NAME", storeName.Split(','));
                }
                sqlCommand = sqlCommand + " ORDER BY STORE_NAME";
                dsReturn   = db.ExecuteDataSet(CommandType.Text, sqlCommand);
                dsReturn.Tables[0].TableName = WST_STORE_FIELDS.DATABASE_TABLE_NAME;
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetReworkStroe Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #15
0
        /// <summary>
        /// 查询包含托盘信息的数据集。
        /// </summary>
        /// <param name="dsSearch">
        /// 包含查询条件的数据集。
        /// </param>
        /// <param name="pconfig">
        /// 分页查询的配置对象。
        /// </param>
        /// <param name="isPaging">
        /// 是否分页查询。
        /// </param>
        /// <returns>包含托盘信息的数据集。</returns>
        private DataSet SearchPalletList(DataSet dsSearch, ref PagingQueryConfig pconfig, bool isPaging, bool isDetail)
        {
            DataSet       dsReturn = new DataSet();
            StringBuilder sBuilder = new StringBuilder();

            try
            {
                if (!isDetail)
                {
                    sBuilder.Append(@"SELECT * FROM
                                     ( 
                                         SELECT A.VIRTUAL_PALLET_NO,A.WORKNUMBER,A.SAP_NO,A.PRO_ID,A.GRADE,A.LOT_NUMBER_QTY,A.ROOM_KEY,
                                                A.POWER_LEVEL,A.TOTLE_POWER,A.AVG_POWER,A.LOT_COLOR,A.CS_DATA_GROUP,
                                                A.CREATE_TIME,A.CREATER,A.CHECK_TIME,A.CHECKER,A.TO_WH_TIME,A.TO_WH,
                                               (SELECT MAX(PALLET_TIME) FROM POR_LOT WHERE PALLET_NO=A.VIRTUAL_PALLET_NO) PALLET_TIME
                                         FROM WIP_CONSIGNMENT A
                                         WHERE A.ISFLAG=1
                                     ) AS A
                                     WHERE 1=1");
                }
                else
                {
                    sBuilder.Append(@"
                                    SELECT * FROM
                                    (
                                        SELECT c.VIRTUAL_PALLET_NO,c.WORKNUMBER,c.SAP_NO,c.PRO_ID,c.GRADE,c.LOT_NUMBER_QTY,
                                               c.POWER_LEVEL,c.TOTLE_POWER,c.AVG_POWER,c.LOT_COLOR,c.CS_DATA_GROUP,
                                               c.CREATE_TIME,c.CREATER,c.CHECK_TIME,c.CHECKER,c.TO_WH_TIME,c.TO_WH,c.ROOM_KEY,
                                               d.ITEM_NO,
                                               t.LOT_NUMBER,
                                               t.WORK_ORDER_NO AS LOT_WORK_ORDER_NO,
                                               t.PRO_ID AS LOT_PRO_ID,
                                               t.PART_NUMBER AS LOT_PART_NUMBER,
                                               t.LOT_SIDECODE,
                                               t.LOT_CUSTOMERCODE,
                                               t.COLOR AS LOT_LOT_COLOR,
                                               t.PRO_LEVEL AS LOT_PRO_LEVEL,
                                               t.QUANTITY AS LOT_QUANTITY,
                                               t.EFFICIENCY AS LOT_EFFICIENCY,
                                               b.GRADE_NAME AS LOT_GRADE_NAME,
                                               a.DEVICENUM,
                                               a.TTIME,
                                               a.VC_MODNAME,
                                               a.PM,a.FF,a.IPM,a.ISC,a.VPM,a.VOC,
                                               a.COEF_PMAX,a.COEF_FF,a.COEF_IMAX,a.COEF_ISC,a.COEF_VMAX,a.COEF_VOC
                                        FROM POR_LOT t 
                                        INNER JOIN WIP_CONSIGNMENT c ON c.VIRTUAL_PALLET_NO=t.PALLET_NO AND c.ISFLAG=1
                                        INNER JOIN WIP_CONSIGNMENT_DETAIL d ON d.CONSIGNMENT_KEY=c.CONSIGNMENT_KEY AND d.LOT_NUMBER=t.LOT_NUMBER
                                        LEFT JOIN WIP_IV_TEST a ON a.LOT_NUM=t.LOT_NUMBER AND a.VC_DEFAULT=1
                                        LEFT JOIN V_ProductGrade b ON b.GRADE_CODE=t.PRO_LEVEL
                                        WHERE t.DELETED_TERM_FLAG<2
                                    ) AS A
                                    WHERE 1=1");
                }
                if (dsSearch != null && dsSearch.Tables.Contains(TRANS_TABLES.TABLE_MAIN_DATA))
                {
                    DataTable dtParams = dsSearch.Tables[TRANS_TABLES.TABLE_MAIN_DATA];
                    Hashtable htParams = CommonUtils.ConvertToHashtable(dtParams);
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_ROOM_KEY))
                    {
                        string roomKey = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_ROOM_KEY]);
                        sBuilder.AppendFormat(" AND A.ROOM_KEY ='{0}'", roomKey.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO))
                    {
                        string palletNo = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO]);
                        if (!string.IsNullOrEmpty(palletNo))
                        {
                            string palletNos = UtilHelper.BuilderWhereConditionString("A.VIRTUAL_PALLET_NO", palletNo.Split(new char[] { ',', '\n', '#' }));
                            sBuilder.AppendFormat(palletNos);
                        }
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO + "_START"))
                    {
                        string lotNumber = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO + "_START"]);
                        sBuilder.AppendFormat(" AND A.VIRTUAL_PALLET_NO >='{0}'", lotNumber.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO + "_END"))
                    {
                        string lotNumber = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_VIRTUAL_PALLET_NO + "_END"]);
                        sBuilder.AppendFormat(" AND A.VIRTUAL_PALLET_NO <='{0}'", lotNumber.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_WORKNUMBER))
                    {
                        string orderNumber = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_WORKNUMBER]);
                        sBuilder.AppendFormat(" AND A.WORKNUMBER LIKE '%{0}%'", orderNumber.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_SAP_NO))
                    {
                        string sapNo = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_SAP_NO]);
                        sBuilder.AppendFormat(" AND A.SAP_NO ='{0}'", sapNo.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_PRO_ID))
                    {
                        string val = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_PRO_ID]);
                        sBuilder.AppendFormat(" AND A.PRO_ID ='{0}'", val.PreventSQLInjection());
                    }

                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_CS_DATA_GROUP))
                    {
                        string csDataGroup = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_CS_DATA_GROUP]);
                        sBuilder.AppendFormat(" AND A.CS_DATA_GROUP ='{0}'", csDataGroup.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_SHIFT))
                    {
                        string shiftName = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_SHIFT]);
                        sBuilder.AppendFormat(" AND A.SHIFT='{0}'", shiftName.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_CREATE_TIME + "_START"))
                    {
                        string createStartTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_CREATE_TIME + "_START"]);
                        sBuilder.AppendFormat(" AND A.PALLET_TIME >='{0}'", createStartTime.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_CREATE_TIME + "_END"))
                    {
                        string createEndTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_CREATE_TIME + "_END"]);
                        sBuilder.AppendFormat(" AND A.PALLET_TIME<='{0}'", createEndTime.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_CHECK_TIME + "_START"))
                    {
                        string createStartTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_CHECK_TIME + "_START"]);
                        sBuilder.AppendFormat(" AND A.CHECK_TIME >='{0}'", createStartTime.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_CHECK_TIME + "_END"))
                    {
                        string createEndTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_CHECK_TIME + "_END"]);
                        sBuilder.AppendFormat(" AND A.CHECK_TIME<='{0}'", createEndTime.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_TO_WH_TIME + "_START"))
                    {
                        string createStartTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_TO_WH_TIME + "_START"]);
                        sBuilder.AppendFormat(" AND A.TO_WH_TIME >='{0}'", createStartTime.PreventSQLInjection());
                    }
                    if (htParams.ContainsKey(WIP_CONSIGNMENT_FIELDS.FIELDS_TO_WH_TIME + "_END"))
                    {
                        string createEndTime = Convert.ToString(htParams[WIP_CONSIGNMENT_FIELDS.FIELDS_TO_WH_TIME + "_END"]);
                        sBuilder.AppendFormat(" AND A.TO_WH_TIME<='{0}'", createEndTime.PreventSQLInjection());
                    }
                }
                if (!isPaging)
                {
                    sBuilder.Append(" ORDER BY A.VIRTUAL_PALLET_NO ASC,A.CREATE_TIME DESC");
                    dsReturn = this._dbRead.ExecuteDataSet(CommandType.Text, sBuilder.ToString());
                }
                else
                {
                    int pages   = 0;
                    int records = 0;
                    AllCommonFunctions.CommonPagingData(sBuilder.ToString(),
                                                        pconfig.PageNo,
                                                        pconfig.PageSize,
                                                        out pages,
                                                        out records,
                                                        this._dbRead,
                                                        dsReturn,
                                                        POR_LOT_FIELDS.DATABASE_TABLE_NAME,
                                                        "ASC",
                                                        new string[] { "VIRTUAL_PALLET_NO", "CREATE_TIME" });
                    pconfig.Pages   = pages;
                    pconfig.Records = records;
                }
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("SearchPalletList Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #16
0
        /// <summary>
        /// 获取物料领用记录。
        /// </summary>
        /// <param name="dtParams">
        /// 包含查询条件的数据表对象。
        /// --------------------------------------
        /// {DO}{STORE_NAME}{OPERATION_NAME}{OPERATOR}{CHARG}{LLIEF}{MATNR}{MBLNR}{RECEIVE_TIME_START}{RECEIVE_TIME_END}
        /// --------------------------------------
        /// DO=Query
        /// ---------------------------------------
        /// DO=其他, 线上仓名称使用逗号分隔,store1,store1...
        /// --------------------------------------
        /// </param>
        /// <param name="pconfig">
        /// 分页查询的配置对象。
        /// </param>
        /// <returns>包含物料领用详细信息的数据集对象。</returns>
        public DataSet GetReceiveMaterialHistory(DataTable dtParams, ref PagingQueryConfig pconfig)
        {
            string  msg      = string.Empty;
            DataSet dsReturn = new DataSet();

            try
            {
                string sql = @"SELECT  W.SAP_ISSURE_KEY,
                                       W.MBLNR ,
                                       W.CHARG ,
                                       W.AUFNR ,
                                       W.PRO_ID,
                                       W.GRADE,
                                       W.EFFICIENCY,
                                       W.LLIEF ,
                                       W.SUPPLIER_CODE,
                                       W.ERFMG ,
                                       W.MATNR ,
                                       W.MATXT ,
                                       W.ERFME ,
                                       B.OPERATION_NAME ,
                                       B.STORE_NAME ,
                                       F.LOCATION_NAME,
                                       W.RECEIVE_TIME ,
                                       W.SHIFT_NAME ,
                                       W.OPERATOR,
                                       W.MEMO
                                 FROM WST_STORE_MATERIAL A
                                 INNER JOIN WST_STORE B ON A.STORE_KEY = B.STORE_KEY
                                 INNER JOIN POR_MATERIAL C ON A.MATERIAL_KEY = C.MATERIAL_KEY
                                 INNER JOIN WST_STORE_MATERIAL_DETAIL D ON A.STORE_MATERIAL_KEY = D.STORE_MATERIAL_KEY
                                 INNER JOIN WST_SAP_ISSURE W ON D.STORE_MATERIAL_DETAIL_KEY = W.STORE_MATERIAL_DETAIL_KEY
                                 INNER JOIN FMM_LOCATION F ON B.LOCATION_KEY = F.LOCATION_KEY 
                                 WHERE B.OBJECT_STATUS=1 ";
                //判断是查询还是LOAD
                string doName = Convert.ToString(dtParams.Rows[0]["DO"]).Trim();
                if (doName == "Query")
                {
                    //领料项目号不为空
                    string materialLot = Convert.ToString(dtParams.Rows[0]["CHARG"]).Trim();
                    if (!string.IsNullOrEmpty(materialLot))
                    {
                        sql += string.Format(" AND W.CHARG LIKE '{0}%'", materialLot.PreventSQLInjection());
                    }
                    //工单号
                    string orderNo = Convert.ToString(dtParams.Rows[0]["AUFNR"]).Trim();
                    if (!string.IsNullOrEmpty(orderNo))
                    {
                        sql += string.Format(" AND W.AUFNR ='{0}'", orderNo.PreventSQLInjection());
                    }
                    //产品号
                    string proId = Convert.ToString(dtParams.Rows[0]["PRO_ID"]).Trim();
                    if (!string.IsNullOrEmpty(proId))
                    {
                        sql += string.Format(" AND W.PRO_ID ='{0}'", proId.PreventSQLInjection());
                    }
                    //转换效率
                    string efficiency = Convert.ToString(dtParams.Rows[0]["EFFICIENCY"]).Trim();
                    if (!string.IsNullOrEmpty(efficiency))
                    {
                        sql += string.Format(" AND W.EFFICIENCY ='{0}'", efficiency.PreventSQLInjection());
                    }
                    //等级
                    string grade = Convert.ToString(dtParams.Rows[0]["GRADE"]).Trim();
                    if (!string.IsNullOrEmpty(grade))
                    {
                        sql += string.Format(" AND W.GRADE ='{0}'", grade.PreventSQLInjection());
                    }
                    //供应商名称
                    string supplierName = Convert.ToString(dtParams.Rows[0]["LLIEF"]).Trim();
                    if (!string.IsNullOrEmpty(grade))
                    {
                        sql += string.Format(" AND W.LLIEF ='{0}'", supplierName.PreventSQLInjection());
                    }
                    //线上仓名称
                    string storeName = Convert.ToString(dtParams.Rows[0]["STORE_NAME"]).Trim();
                    if (!string.IsNullOrEmpty(grade))
                    {
                        sql += string.Format(" AND B.STORE_NAME ='{0}'", storeName.PreventSQLInjection());
                    }
                    //最早发料时间不为空
                    string receiveStartTime = Convert.ToString(dtParams.Rows[0]["RECEIVE_TIME_START"]).Trim();
                    if (!string.IsNullOrEmpty(receiveStartTime))
                    {
                        sql += string.Format(" AND W.RECEIVE_TIME >='{0}'", receiveStartTime.PreventSQLInjection());
                    }
                    //最晚发料时间不为空
                    string receiveEndTime = Convert.ToString(dtParams.Rows[0]["RECEIVE_TIME_END"]).Trim() + " 23:59:59";
                    if (!string.IsNullOrEmpty(receiveEndTime))
                    {
                        sql += string.Format(" AND W.RECEIVE_TIME <= '{0}'", receiveEndTime.PreventSQLInjection());
                    }
                }
                else
                {
                    string storeName = Convert.ToString(dtParams.Rows[0]["STORE_NAME"]).Trim();
                    if (!string.IsNullOrEmpty(storeName))
                    {
                        string sStoreName = UtilHelper.BuilderWhereConditionString("B.STORE_NAME", storeName.Split(','));
                        sql += sStoreName;
                    }
                }
                if (pconfig == null)
                {
                    dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                }
                else
                {
                    int pages   = 0;
                    int records = 0;
                    AllCommonFunctions.CommonPagingData(sql, pconfig.PageNo, pconfig.PageSize, out pages,
                                                        out records, db, dsReturn, "STORE_MATERIAL");
                    pconfig.Pages   = pages;
                    pconfig.Records = records;
                }
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, msg);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, msg);
                LogService.LogError(string.Format("GetReceiveMaterialHistory Error:{0}", ex.Message));
            }
            return(dsReturn);
        }
Пример #17
0
        /// <summary>
        /// 获取材料耗用详细信息。
        /// </summary>
        /// <param name="_materialLot">物料批号。</param>
        /// <param name="_gongXuName">工序名称。</param>
        /// <param name="_wuLiaoNumber">物料料号。</param>
        /// <param name="_factoryRoomName">车间名称。</param>
        /// <param name="_wuLiaoMiaoShu">物料描述。</param>
        /// <param name="_equipmentName">设备名称。</param>
        /// <param name="_gongYingShang">供应商名称。</param>
        /// <param name="_banCi">班次。</param>
        /// <param name="_lineCang">线上仓名称。</param>
        /// <param name="_jobNumber">工号。</param>
        /// <param name="_startTime">耗用时间。</param>
        /// <param name="_endTime">耗用时间。</param>
        /// <param name="_stores">线上仓名称。使用逗号分隔:store1,store2...</param>
        /// <param name="_operations">工序名称。使用逗号分隔:op1,op2...</param>
        /// <returns></returns>
        public DataSet GetStoreMaterialDetail(string _materialLot, string _gongXuName, string _wuLiaoNumber,
                                              string _factoryRoomName, string _wuLiaoMiaoShu, string _equipmentName, string _gongYingShang,
                                              string _banCi, string _lineCang, string _jobNumber,
                                              DateTime _startTime, DateTime _endTime,
                                              string _stores, string _operations)
        {
            string  sqlCondition      = "";
            string  sqlConditionStore = "";
            DataSet dsReturn          = new DataSet();

            try
            {
                string sql = @" SELECT ROW_NUMBER() OVER(ORDER BY A.MATERIAL_LOT) AS ROWNUMBER,
                                    A.MATERIAL_LOT,A.MATNR,A.MATXT,A.USED_QTY,A.ERFME,A.LLIEF,A.STORE_NAME,A.ROUTE_OPERATION_NAME,
                                    A.LOCATION_NAME,A.EQUIPMENT_NAME,A.SHIFT_NAME,A.USED_TIME,A.OPERATOR,A.STIR_TIME,A.PRINT_QTY
                                FROM 
                                (
                                    SELECT DISTINCT D.MATERIAL_LOT,I.MATNR,I.MATXT,W.USED_QTY,I.ERFME,I.LLIEF,S.STORE_NAME,V.ROUTE_OPERATION_NAME,
                                            F.LOCATION_NAME,E.EQUIPMENT_NAME,U.SHIFT_NAME,U.USED_TIME,U.OPERATOR,W.STIR_TIME,W.PRINT_QTY
                                    FROM FMM_LOCATION  F,
                                        WST_STORE S,
                                        WST_STORE_MATERIAL M,
                                        WST_STORE_MATERIAL_DETAIL D,
                                        WST_SAP_ISSURE I,
                                        WST_MATERIAL_USED_DETAIL W,
                                        WST_MATERIAL_USED U,
                                        POR_ROUTE_OPERATION_VER V,
                                        EMS_EQUIPMENTS E 
                                    WHERE F.LOCATION_KEY = S.LOCATION_KEY
                                    AND S.STORE_KEY = M.STORE_KEY
                                    AND M.STORE_MATERIAL_KEY = D.STORE_MATERIAL_KEY
                                    AND D.STORE_MATERIAL_DETAIL_KEY = I.STORE_MATERIAL_DETAIL_KEY
                                    AND D.STORE_MATERIAL_DETAIL_KEY = W.STORE_MATERIAL_DETAIL_KEY
                                    AND W.MATERIAL_USED_KEY = U.MATERIAL_USED_KEY
                                    AND U.OPERATION_KEY = V.ROUTE_OPERATION_VER_KEY
                                    AND U.EQUIPMENT_KEY = E.EQUIPMENT_KEY ";
                if (!string.IsNullOrEmpty(_materialLot))
                {
                    sql += string.Format(" AND D.MATERIAL_LOT LIKE '{0}%'", _materialLot.PreventSQLInjection());
                }
                if (string.IsNullOrEmpty(_gongXuName))
                {
                    sqlCondition = UtilHelper.BuilderWhereConditionString("ROUTE_OPERATION_NAME", _operations.Split(','));
                    sql         += sqlCondition;
                }
                else
                {
                    sql += string.Format(" AND V.ROUTE_OPERATION_NAME='{0}'", _gongXuName.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_wuLiaoNumber))
                {
                    sql += string.Format(" AND I.MATNR LIKE '{0}%'", _wuLiaoNumber.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_factoryRoomName))
                {
                    sql += string.Format(" AND F.LOCATION_NAME='{0}'", _factoryRoomName.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_wuLiaoMiaoShu))
                {
                    sql += string.Format(" AND I.MATXT LIKE '{0}%'", _wuLiaoMiaoShu.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_equipmentName))
                {
                    sql += string.Format(" AND E.EQUIPMENT_NAME='{0}'", _equipmentName.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_gongYingShang))
                {
                    sql += string.Format(" AND I.LLIEF LIKE '{0}%'", _gongYingShang.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_banCi))
                {
                    sql += string.Format(" AND U.SHIFT_NAME='{0}'", _banCi.PreventSQLInjection());
                }
                if (string.IsNullOrEmpty(_lineCang))
                {
                    sqlConditionStore = UtilHelper.BuilderWhereConditionString("STORE_NAME", _stores.Split(','));
                    sql += sqlConditionStore;
                }
                else
                {
                    sql += string.Format(" AND S.STORE_NAME='{0}'", _lineCang.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_jobNumber))
                {
                    sql += string.Format(" AND U.OPERATOR LIKE '{0}%'", _jobNumber.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(_startTime.ToString()))
                {
                    sql += string.Format(" AND U.USED_TIME>='{0}'", _startTime);
                }
                if (!string.IsNullOrEmpty(_endTime.ToString()))
                {
                    sql += string.Format(" AND U.USED_TIME<='{0}'", _endTime);
                }

                sql     += ") A";
                dsReturn = db.ExecuteDataSet(CommandType.Text, sql);
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "");
            }
            catch (Exception ex)
            {
                FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("GetStoreMaterialDetail Error: " + ex.Message);
            }
            return(dsReturn);
        }
Пример #18
0
        /// <summary>
        /// 查询在线物料。
        /// </summary>
        /// <param name="model">查询条件。</param>
        /// <param name="pconfig">分页对象。</param>
        /// <returns>包含在线物料信息的数据集对象。</returns>
        public DataSet Query(OnlineMaterialQueryModel model, ref PagingQueryConfig pconfig)
        {
            DataSet       dsReturn = new DataSet();
            StringBuilder sbSql    = new StringBuilder();

            try
            {
                sbSql.Append(@"SELECT A.STORE_MATERIAL_KEY ,
                                  SUM(A.CURRENT_QTY)AS QTY,
                                  C.STORE_NAME AS STORE_NAME,
                                  D.MATERIAL_CODE AS  MATERIAL_CODE,
                                  D.MATERIAL_NAME AS  MATERIAL_NAME,
                                  D.UNIT AS  UNIT, 
                                  E.LOCATION_NAME AS ROOM_NAME,
                                  C.OPERATION_NAME AS  OPERATION_NAME  
                            FROM WST_STORE_MATERIAL_DETAIL A 
                            LEFT JOIN WST_STORE_MATERIAL B ON A.STORE_MATERIAL_KEY=B.STORE_MATERIAL_KEY
                            LEFT JOIN WST_STORE C ON B.STORE_KEY=C.STORE_KEY
                            LEFT JOIN POR_MATERIAL D ON B.MATERIAL_KEY=D.MATERIAL_KEY
                            LEFT JOIN FMM_LOCATION E ON C.LOCATION_KEY=E.LOCATION_KEY
                            WHERE CURRENT_QTY>0 ");
                if (!string.IsNullOrEmpty(model.OperationName))
                {
                    sbSql.AppendFormat(UtilHelper.BuilderWhereConditionString("C.OPERATION_NAME", model.OperationName.Split(',')));
                }

                if (!string.IsNullOrEmpty(model.StoreName))
                {
                    sbSql.AppendFormat(UtilHelper.BuilderWhereConditionString("C.STORE_NAME", model.StoreName.Split(',')));
                }

                if (!string.IsNullOrEmpty(model.MaterialCode))
                {
                    sbSql.AppendFormat(" AND D.MATERIAL_CODE  LIKE '{0}%'", model.MaterialCode.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.MaterialLot))
                {
                    sbSql.AppendFormat(" AND A.MATERIAL_LOT  LIKE '{0}%'", model.MaterialLot.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.RoomName))
                {
                    sbSql.AppendFormat(" AND E.LOCATION_NAME  LIKE '{0}%'", model.RoomName.PreventSQLInjection());
                }
                if (!string.IsNullOrEmpty(model.SupplierName))
                {
                    sbSql.AppendFormat(" AND A.MATERIAL_SUPPLIER  LIKE '{0}%'", model.SupplierName.PreventSQLInjection());
                }

                sbSql.Append(@" GROUP BY A.STORE_MATERIAL_KEY,C.STORE_NAME,D.MATERIAL_CODE,E.LOCATION_NAME,
                               D.MATERIAL_NAME,D.UNIT, E.LOCATION_NAME,C.OPERATION_NAME ");
                int pages   = 0;
                int records = 0;
                AllCommonFunctions.CommonPagingData(sbSql.ToString(),
                                                    pconfig.PageNo,
                                                    pconfig.PageSize,
                                                    out pages,
                                                    out records,
                                                    db,
                                                    dsReturn,
                                                    "WST_STORE_MATERIAL",
                                                    "MATERIAL_CODE ASC");
                pconfig.Pages   = pages;
                pconfig.Records = records;
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty);
            }
            catch (Exception ex)
            {
                ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message);
                LogService.LogError("SearchLotList Error: " + ex.Message);
            }
            return(dsReturn);
        }