Ejemplo n.º 1
0
        static void WriteInternal(string pageName, string groupName, string name, MyLifetime lifetime, int value)
        {
            Debug.Assert(pageName != null && groupName != null && name != null, "Invalid dictionary keys.");

            GroupToNameDictionary page;

            if (!m_records.TryGetValue(pageName, out page))
            {
                page = new GroupToNameDictionary();
                m_records.Add(pageName, page);
                m_orderedPages.Add(pageName);
            }

            NameToRecordDictionary group;

            if (!page.TryGetValue(groupName, out group))
            {
                group = new NameToRecordDictionary();
                page.Add(groupName, group);
            }

            MyRecord record;

            if (!group.TryGetValue(name, out record))
            {
                record = new MyRecord();
                group.Add(name, record);
            }

            record.Lifetime = lifetime;
            record.Value    = value;
        }
Ejemplo n.º 2
0
        public static void WriteTo(StringBuilder writeTo)
        {
            writeTo.Clear();

            foreach (var pageName in m_orderedPages)
            {
                var page = m_records[pageName];

                writeTo.Clear();
                writeTo.Append(pageName);
                writeTo.AppendLine(":");

                foreach (var group in page)
                {
                    writeTo.Append("  ");
                    writeTo.AppendLine(group.Key);

                    foreach (var record in group.Value)
                    {
                        MyRecord v = record.Value;
                        writeTo.AppendFormat("    {0}: {1:#,0}", record.Key, v.Value);
                        writeTo.AppendLine();
                    }

                    writeTo.AppendLine();
                }
            }
        }
        static void Main(string[] args)
        {
            var diffs = new List <Diff>
            {
                Diff.Insert(" "),
                Diff.Equal("a"),
                Diff.Insert("nd"),
                Diff.Equal(" [[Pennsylvania]]"),
                Diff.Delete(" and [[New")
            };

            var patch1 = Patch.FromDiffs(diffs);

            Console.WriteLine(diffs.Text1());
            Console.WriteLine(diffs.Text2());

            var patch2 = Patch.Compute(diffs.Text1(), diffs.Text2(), 0, 4);

            Console.WriteLine(patch1.ToText());
            Console.WriteLine(patch2.ToText());

            //Debug.Assert(patch1.SequenceEqual(patch2));

            ImmutableList <int> someList = Enumerable.Range(0, 10).ToImmutableList();
            var record1 = new MyRecord(someList);
            var record2 = new MyRecord(someList);

            Console.WriteLine(record1 == record2);
        }
        public async Task QueryMixed_main_index()
        {
            // arrange
            var id      = GetRandomString(10);
            var record1 = new MyRecord {
                Id    = id,
                SubId = GetRandomString(10),
                Value = "Hello"
            };
            await Table.PutItemAsync(MyDataModel.GetPrimaryKey(record1), record1);

            var record2 = new MyOtherRecord {
                Id    = id,
                SubId = GetRandomString(10),
                Name  = "Bob"
            };
            await Table.PutItemAsync(MyDataModel.GetPrimaryKey(record2), record2);

            // act
            var result = await Table.Query(MyDataModel.SelectMyRecordsAndMyOtherRecords(record1.Id), consistentRead : true)
                         .ExecuteAsync();

            // assert
            result.Should().HaveCount(2);
            result.Should().ContainEquivalentOf(record1);
            result.Should().ContainEquivalentOf(record2);
        }
Ejemplo n.º 5
0
        private static void Demonstrate()
        {
            var rec = new MyRecord
            {
                MyInt    = 3,
                MyString = ""
            };

            var rec2 = rec with {
            };
            var rec3 = rec with {
                MyInt = 4
            };

            // rec.MyInt = 4; Won't compile!

            Console.WriteLine(rec.MyInt);
            Console.WriteLine(rec2.MyInt);
            Console.WriteLine(rec3.MyInt);
            Console.WriteLine(rec2 == rec);
            Console.WriteLine(rec3 == rec);

            var(myInt, myString) = rec;

            Console.WriteLine(myInt);
            Console.WriteLine(myString);
        }
    }
Ejemplo n.º 6
0
        static void WriteInternal(string pageName, string groupName, string name, MyLifetime lifetime, int value)
        {
            Debug.Assert(pageName != null && groupName != null && name != null, "Invalid dictionary keys.");

            GroupToNameDictionary page;
            if (!m_records.TryGetValue(pageName, out page))
            {
                page = new GroupToNameDictionary();
                m_records.Add(pageName, page);
                m_orderedPages.Add(pageName);
            }

            NameToRecordDictionary group;
            if (!page.TryGetValue(groupName, out group))
            {
                group = new NameToRecordDictionary();
                page.Add(groupName, group);
            }

            MyRecord record;
            if (!group.TryGetValue(name, out record))
            {
                record = new MyRecord();
                group.Add(name, record);
            }

            record.Lifetime = lifetime;
            record.Value = value;
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            var record1 = new MyRecord(new[] { "banana", "apple" });
            var record2 = new MyRecord(new[] { "banana", "apple" });

            Console.WriteLine(record1 == record2);
        }
Ejemplo n.º 8
0
    public static IEnumerable <MyRecord> ReadMyRecords(this FileInfo file, char separator)
    {
        var records = new List <MyRecord>();

        using (var reader = new StreamReader(file.FullName))
        {
            var lineToProcess = reader.ReadLine();
            while (lineToProcess != null)
            {
                var splitLines = lineToProcess.Split(new char[] { separator }, 3);
                if (splitLines.Length < 3)
                {
                    throw new InvalidDataException();
                }
                var record = new MyRecord()
                {
                    Rec         = splitLines[0],
                    CountryCode = splitLines[1],
                    Year        = Int32.Parse(splitLines[2]),
                };
                records.Add(record);
                lineToProcess = reader.ReadLine();
            }
        }
        return(records);
    }
Ejemplo n.º 9
0
        void ECRECNProgressSender()
        {
            MyRecord.Say(@"开启发送每日未结ECR\ECN..........");
            Thread t = new Thread(ECRECNProgressSendMail);

            t.IsBackground = true;
            t.Start();
            MyRecord.Say(@"定时发送每日未结ECR、ECN已经启动。");
        }
        void SendWorkspaceInspectionLoder()
        {
            MyRecord.Say("开启定时发送当日纪律稽核表..........");
            Thread t = new Thread(SendWorkspaceInspectionEmail);

            t.IsBackground = true;
            t.Start();
            MyRecord.Say("开启定时发送当日纪律稽核表完成。");
        }
Ejemplo n.º 11
0
        void DeliverPlanNumbSumSender()
        {
            MyRecord.Say("开启发送每日出货计划量..........");
            Thread t = new Thread(DeliverPlanNumbSumSendMail);

            t.IsBackground = true;
            t.Start();
            MyRecord.Say("定时发送每日出货计划量已经启动。");
        }
Ejemplo n.º 12
0
        void SendIPQCListStaticLoader()
        {
            MyRecord.Say("开启定时发送4H不良判定统计表..........");
            Thread t = new Thread(SendIPQCListStatic);

            t.IsBackground = true;
            t.Start();
            MyRecord.Say("开启定时发送4H不良判定统计表完成。");
        }
        /// <summary>Получить метку</summary>
        /// <param name="record"></param>
        /// <param name="projection"></param>
        /// <returns></returns>
        public static Placemark GetKml(this MyRecord record, ProjectionInfo projection)
        {
            var feature = new Placemark();
            var geom    = record.GetGeometry() as TPolygon;

            feature.Geometry = geom.GetKml(projection);
            feature.Name     = "test";

            return(feature);
        }
Ejemplo n.º 14
0
        public void Record()
        {
            // 'Prop' property binds with a ctor arg called 'Prop'.
            MyRecord obj = JsonSerializer.Deserialize <MyRecord>("{}");

            Assert.Equal(0, obj.Prop);

            obj = JsonSerializer.Deserialize <MyRecord>(@"{""Prop"":5}");
            Assert.Equal(5, obj.Prop);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 內頁顯示
        /// </summary>
        /// <param name="data"></param>
        public Page2(int fromID)
        {
            InitializeComponent();

            //取得資料庫資料
            MyRecord data = fooDoggyDatabase.GetItemFromID(fromID);

            NewsImage.Source     = data.image.ToString();
            NewsTitle.Text       = data.title.ToString();
            NewsDescription.Text = data.description.ToString();
        }
Ejemplo n.º 16
0
        static void Main()
        {
            var r = new MyRecord(Gender.Male);

            Console.WriteLine(JsonConvert.SerializeObject(r));

            var c = new MyClass {
                Gender = Gender.Male
            };

            Console.WriteLine(JsonConvert.SerializeObject(c));
        }
Ejemplo n.º 17
0
 private Placemark GetKml(MyRecord record)
 {
     return(new Placemark()
     {
         Name = record.Rule.Entpath,
         Geometry = GetKmlGeometry(record.GetGeometry()),
         Description = new Description()
         {
             Text = record.GetFieldsString()
         }
     });
 }
Ejemplo n.º 18
0
        public void When_the_subject_is_a_record_it_should_compare_it_by_its_members()
        {
            var actual = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "bar", "zip", "foo" }
            };

            var expected = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "foo", "bar", "zip" }
            };

            actual.Should().BeEquivalentTo(expected);
        }
        public void Should_not_use_ToString_for_records()
        {
            var settings = new MyRecord("asdf", "qwer", 42);

            var result = PrintAndParse(settings, false);

            result.Should().Be(Normalize(@"{
   ""A"": ""asdf"",
   ""B"": ""<secret>"",
   ""C"": ""42""
}"));
        }
Ejemplo n.º 20
0
        private List <string> GetFieldValues(MyRecord rec)
        {
            var res = new List <string>();

            foreach (var f in rec.FileldList)
            {
                if (!f.IsGeom)
                {
                    res.Add(f.GetString());
                }
            }
            return(res);
        }
Ejemplo n.º 21
0
        public void When_global_record_comparing_options_are_chained_it_should_ensure_the_last_one_wins()
        {
            var actual = new MyRecord {
                CollectionProperty = new[] { "bar", "zip", "foo" }
            };

            var expected = new MyRecord {
                CollectionProperty = new[] { "foo", "bar", "zip" }
            };

            actual.Should().BeEquivalentTo(expected, o => o
                                           .ComparingRecordsByValue()
                                           .ComparingRecordsByMembers());
        }
Ejemplo n.º 22
0
        When_all_records_except_a_specific_type_should_be_treated_as_value_types_it_should_compare_that_specific_type_by_its_members()
        {
            var actual = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "bar", "zip", "foo" }
            };

            var expected = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "foo", "bar", "zip" }
            };

            actual.Should().BeEquivalentTo(expected, o => o
                                           .ComparingRecordsByValue()
                                           .ComparingByMembers <MyRecord>());
        }
Ejemplo n.º 23
0
        public void When_the_subject_is_a_record_it_should_mention_that_in_the_configuration_output()
        {
            var actual = new MyRecord {
                StringField = "foo",
            };

            var expected = new MyRecord {
                StringField = "bar",
            };

            Action act = () => actual.Should().BeEquivalentTo(expected);

            act.Should().Throw <XunitException>()
            .WithMessage("*Compare records by their members*");
        }
Ejemplo n.º 24
0
        public override void WriteProgress(long sourceId, ProgressRecord record)
        {
            var x = new MyRecord()
            {
                Activity         = record.Activity, ActivityId = record.ActivityId,
                CurrentOperation = record.CurrentOperation
            };

            x.ParentActivityId = record.ParentActivityId;
            x.PercentComplete  = record.PercentComplete;
            x.RecordType       = (int)record.RecordType;
            x.SecondsRemaining = record.SecondsRemaining;

            x.StatusDescription = record.StatusDescription;
            _terminalInterface.Dispatcher.Invoke(() => { _terminalInterface.WriteProgress(sourceId, x); });
        }
Ejemplo n.º 25
0
		public ExtScript() {
			Console.WriteLine("ExtScript()");

			var record = Record.create(new Schema[] {
			    new Schema { name = "id", type = "int" },
			    new Schema { name = "value" }
			});

			JsonReader reader = new JsonReader(new JsonReaderConfig {
				id = "id"
			}, record);
			Console.WriteLine(reader);

			Store store = new Store(new StoreConfig {
				reader = reader
			});

			var data = new MyRecord[] {
			    new MyRecord { id = 1, value = "first" },
			    new MyRecord { id = 2, value = "second" }
			};
			Console.WriteLine(data);
			store.loadData(data);

			ColumnModelConfig[] columns = new ColumnModelConfig[] {
			    new ColumnModelConfig {
			        dataIndex = "id", header = "ID"
			    },
			    new ColumnModelConfig {
			        dataIndex = "value", header = "Value"
			    }
			};

			var colModel = new ColumnModel(columns);

			this.grid = new GridPanel(new GridPanelConfig {
				height = 150.0,
				renderTo = "grid",
				colModel = colModel,
				store = store
			});
			Console.WriteLine(this.grid);

			this.grid.on("dblclick", new GridPanelDblclickDelegate(this.OnDblClick), this);
			Console.WriteLine("ready");
		}
Ejemplo n.º 26
0
        public void When_all_records_should_be_treated_as_value_types_it_should_use_equality_for_comparing()
        {
            var actual = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "bar", "zip", "foo" }
            };

            var expected = new MyRecord {
                StringField = "foo", CollectionProperty = new[] { "foo", "bar", "zip" }
            };

            Action act = () => actual.Should().BeEquivalentTo(expected, o => o
                                                              .ComparingRecordsByValue());

            act.Should().Throw <XunitException>()
            .WithMessage("*Expected*MyRecord*but found*MyRecord*")
            .WithMessage("*Compare records by value*");
        }
Ejemplo n.º 27
0
        public MyMessage(string str)
        {
            SIG      = 5523794;
            MID      = (ushort)this.GetHashCode();
            myRecord = new MyRecord(str);
            RAD      = myRecord.MyRecordToBytes();
            RAL      = (ushort)RAD.Length;

            List <byte> combList = new List <byte>();

            combList.AddRange(BitConverter.GetBytes(SIG));
            combList.AddRange(BitConverter.GetBytes(MID));
            combList.AddRange(BitConverter.GetBytes(RAL));
            combList.AddRange(RAD);

            byte[] byteArr = combList.ToArray();
            MCS = crc16(byteArr, byteArr.Length);
        }
Ejemplo n.º 28
0
            public static MyRecord BytesToMyRecord(byte[] bytes)
            {
                MyRecord myRecord = new MyRecord();

                int offset = 0;

                myRecord.UID = BitConverter.ToInt32(bytes, offset);

                offset     += Marshal.SizeOf(myRecord.UID);
                myRecord.TM = BitConverter.ToUInt32(bytes, offset);

                offset     += Marshal.SizeOf(myRecord.TM);
                myRecord.RL = BitConverter.ToUInt16(bytes, offset);

                offset     += Marshal.SizeOf(myRecord.RL);
                myRecord.RD = new byte[bytes.Length - offset];
                Array.Copy(bytes, offset, myRecord.RD, 0, myRecord.RD.Length);

                return(myRecord);
            }
Ejemplo n.º 29
0
        /// <summary>Добавить сущность</summary>
        /// <param name="rec">Запись</param>
        /// <returns></returns>
        public Feature AddFeature(MyRecord rec)
        {
            var geom = rec.GetGeometry();
            var type = FeatureType.TABFC_NoGeom;

            if (geom == null)
            {
                return(AddFeature(type, new List <List <Vertex> >(),
                                  GetFieldValues(rec), null));
            }
            switch (geom.GetGeometryType())
            {
            case GeometryType.Point:
                type = FeatureType.TABFC_Point;
                break;

            case GeometryType.LineString:
                type = FeatureType.TABFC_Polyline;
                break;

            case GeometryType.Polygon:
            case GeometryType.MultiPolygon:
                type = FeatureType.TABFC_Region;
                break;

            case GeometryType.No:
                break;

            case GeometryType.GeometryCollection:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            if (geom.IsValid())
            {
                return(AddFeature(type, GetParts(geom), GetFieldValues(rec), null));
            }
            return(type == FeatureType.TABFC_NoGeom ? AddFeature(type, new List <List <Vertex> >(),
                                                                 GetFieldValues(rec), null) : null);
        }
Ejemplo n.º 30
0
        public void ItWorks()
        {
            var slice = CreateSlice(() =>
            {
                var storeKey = "myslice";

                MyRecord initialState = new MyRecord();

                var actionTypes = (
                    rename: $"{storeKey}/rename",
                    error: $"{storeKey}/error",
                    start: $"{storeKey}/start",
                    started: $"{storeKey}/started",
                    completed: $"{storeKey}/completed",
                    success: $"{storeKey}/success"
                    );

                var actions = (
                    rename: CreateActionCreator <string>(actionTypes.rename),
                    error: CreateActionCreator <Exception>(actionTypes.error),
                    start: CreateActionCreator(actionTypes.start), // Starts middleware
                    started: CreateActionCreator(actionTypes.started),
                    success: CreateActionCreator <object>(actionTypes.success),
                    completed: CreateActionCreator(actionTypes.completed)
                    );

                var selector = CreateGenericSelector(storeKey, initialState);

                var reducer = CreateReducer(initialState, (state, action) =>
                {
                    switch (action)
                    {
                    case IAction a when Equals(actionTypes.rename, a.Type):
                        {
                            var(name, error, busy, success) = selector(state);
                            return(name: a.Payload as string, error, busy, success);
                        }
Ejemplo n.º 31
0
        void SendIPQCListStatic()
        {
            try
            {
                MyRecord.Say("-----------------开启定时发送4H不良判定统计表-------------------------");
                string body = MyConvert.ZH_TW(@"
<HTML>
<BODY style=""FONT-SIZE: 9pt; FONT-FAMILY: PMingLiU"" leftMargin=5 topMargin=5 bgColor=#ece4f3 #ffffff>
<DIV><FONT size=3 face=PMingLiU>{3}ERP系统提示您:</FONT></DIV>
<DIV><FONT size=3 face=PMingLiU>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下述表格为过去4H({0:MM.dd HH:mm}至{2:MM.dd HH:mm})制程不良判定结果的统计。</FONT></DIV>
<DIV><FONT size=3 face=PMingLiU>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (详细不良判定内容,请看附档。)</FONT></DIV>
<DIV>{1}
</DIV>
<DIV><FONT face=PMingLiU><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT color=#0000ff size=4 face=PMingLiU><STRONG>&nbsp;&nbsp;此郵件由ERP系統自動發送,请勿在此郵件上直接回復。</STRONG></FONT></DIV>
<DIV><FONT color=#800080 size=2><STRONG>&nbsp;&nbsp;&nbsp;</STRONG>
<FONT color=#000000 face=PMingLiU>{2:yy/MM/dd HH:mm},由ERP系统伺服器({4})自动发送。<BR>
&nbsp;&nbsp;&nbsp;&nbsp;如自動發送功能有問題或者格式内容修改建議,請MailTo:<A href=""mailto:[email protected]"">JOHN</A><BR>
</FONT></FONT></DIV></FONT></BODY></HTML>
");
                string bbr  = @"
<FONT size=3 face=PMingLiU>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<TABLE style=""BORDER-COLLAPSE: collapse"" cellSpacing=0 cellPadding=0 width=""100%"" border=0>
  <TBODY>
	<TR>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	责任部门
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	前5大不良
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	平均不良率
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	不良数最高工序
	</TD>
	</TR>
	{0}
</TBODY></TABLE>
</FONT>
";
                string br   = @"
	<TR>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	{0}
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	{1}
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	{2:#.###%}
	</TD>
	<TD class=xl63 style=""BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"" align=center >
	{3}
	</TD>
	</TR>
";

                string   SQL     = @"
	SELECT [a].[ProcessID] AS [OccuredProcessCode], [a].[MachinID] AS [OccuredMachineCode], [a].[Numb1], [a].[Numb2], [a].[SampleNumb], [a].[AdjustNumb],
			[a].[AccNoteRdsNo], [a].[RenoteRdsno], [a].[ProduceNo] AS [ProduceRdsNo], [a].[ProductCode], [b].[RejNumb], [b].[ScrapNumber],
			[b].[AssignToDepartmentID], [b].[ProjCode], [b].[ItemID], [d].[name] AS [ProductName], [b].[Editor], [b].[EditDate], [c].[name] AS [ProjName],
			[dp].[name] AS [AssignToDepartmentName], [dp].[FullSortID], [p].[name] AS [AssignToProcessName], [p1].[name] AS [OccuredProcessName],
			[m].[name] AS [OccuredMachineName], [dp1].[name] AS [OccuredDepartmentName], [a].[RptDate],
			(ISNULL([b].[RejNumb], 0) / (ISNULL([a].[Numb1], 0) + ISNULL([a].[Numb2], 0) + ISNULL([a].[SampleNumb], 0) + ISNULL([a].[AdjustNumb], 0))) AS [Yield]
		FROM [dbo].[ProdDailyReport] [a]
			INNER JOIN [dbo].[_PMC_IPQC_List] [b] ON [a].[_ID] = [b].[zbid]
			INNER JOIN [dbo].[AllMaterialView] [d] ON [d].[code] = [a].[ProductCode]
			INNER JOIN [dbo].[moProcedure] [p1] ON [p1].[code] = [a].[ProcessID]
			INNER JOIN [dbo].[moMachine] [m] ON [m].[code] = [a].[MachinID]
			INNER JOIN [dbo].[pbDept] [dp1] ON [dp1].[_ID] = [m].[DepartmentID]
			LEFT OUTER JOIN [dbo].[_QC_Item] [c] ON [b].[ProjCode] = [c].[code]
			LEFT OUTER JOIN [dbo].[pbDept] [dp] ON [dp].[_ID] = [b].[AssignToDepartmentID]
			LEFT OUTER JOIN [dbo].[moProcedure] [p] ON [p].[code] = [b].[AssignToProcessCode]
		WHERE [a].[QCCheckDate] BETWEEN DATEADD(HOUR, -4, GETDATE()) AND GETDATE()
		ORDER BY [a].[RptDate], [a].[ProduceNo], [a].[AccNoteRdsNo]
";
                DateTime NowTime = DateTime.Now;
                string   brs     = "";
                MyRecord.Say(string.Format("后台计算定时4H不良判定统计表,{0}", NowTime));
                using (MyData.MyDataTable md = new MyData.MyDataTable(SQL))
                {
                    string fname = string.Empty;
                    MyRecord.Say("创建SendMail。");
                    MyBase.SendMail sm = new MyBase.SendMail();
                    MyRecord.Say("加载邮件内容。");
                    MyRecord.Say("计算定时发送4H不良判定统计表");
                    if (md.MyRows.IsNotEmptySet())
                    {
                        var v = from a in md.MyRows
                                select new IPQCStaticItem(a);
                        List <IPQCStaticItem> lData = v.ToList();
                        var va = from a in lData
                                 group a by a.AssignToDepartmentName into g
                                 select new
                        {
                            DepartmentName = g.Key,
                            Top5           = string.Join(",", g.GroupBy(k => k.ProjName).Select(q => new { ProjName = q.Key, RejNumb = q.Sum(p => p.RejNumb) }).OrderByDescending(x => x.RejNumb).Take(5).Select(y => string.Format("{0}:{1}", y.ProjName, y.RejNumb))),
                            AvgYeild       = g.Average(z => z.Yield),
                            TopProcessName = g.OrderBy(u => u.RejNumb).Take(1).FirstOrDefault().AssignToProcessName
                        };
                        foreach (var ri in va)
                        {
                            brs += string.Format(br, ri.DepartmentName, ri.Top5, ri.AvgYeild, ri.TopProcessName);
                        }
                        MyRecord.Say(string.Format("表格一共:{0}行,表格已经生成。", md.Rows.Count));
                        bbr = string.Format(bbr, brs);
                    }
                    else
                    {
                        bbr = @"<FONT size=5 face=PMingLiU color=Red>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 过去4H没有做过不良判定。</FONT></DIV>";
                    }

                    sm.MailBodyText = MyConvert.ZH_TW(string.Format(body, NowTime.AddHours(-4), bbr, NowTime, MyBase.CompanyTitle, LocalInfo.GetLocalIp()));
                    sm.Subject      = MyConvert.ZH_TW(string.Format("{1}{0:yy年MM月dd日HH时}_4H不良判定统计。", NowTime, MyBase.CompanyTitle));

                    MyRecord.Say("计算邮件附件内容。");
                    if (md.MyRows.IsNotEmptySet())
                    {
                        IPQCStaticItem xx;
                        var            vAttachView = from a in md.MyRows
                                                     orderby a.Value("FullSortID")
                                                     select a;

                        string[] fields   = new string[] { "ProduceRdsNo", "AccNoteRdsNo", "RptDate", "OccuredDepartmentName", "OccuredProcessName", "OccuredMachineName", "RenoteRdsno", "ProductCode", "ProductName", "Numb1", "Numb2", "SampleNumb", "AdjustNumb", "ProjName", "RejNumb", "Editor", "EditDate", "AssignToDepartmentName", "AssignToProcessName", "Yield" };
                        string[] captions = new string[] { "工单号", "完工单号", "完工日期", "发现部门", "发现工序", "发现机台", "不不良判定单号", "产品编号", "料号", "良品数", "不良数", "样品数", "过版纸数", "不良项目", "不良数", "判定人", "判定时间", "责任部门", "责任机台", "不良率" };
                        fname = ExportExcel.Export(sm, vAttachView, fields, captions, LCStr("不良判定表"));
                    }
                    ;

                    MyConfig.MailAddress mAddress = MyConfig.GetMailAddress("IPQCListStatic");
                    MyRecord.Say(string.Format("MailTO:{0}\r\nMailCC:{1}", mAddress.MailTo, mAddress.MailCC));
                    sm.MailTo = mAddress.MailTo;
                    sm.MailCC = mAddress.MailCC;
                    //sm.MailTo = "*****@*****.**";

                    MyRecord.Say("发送邮件。");
                    sm.SendOut();
                    sm.mail.Dispose();
                    sm = null;
                    MyRecord.Say("邮件已经发送。");
                    if (File.Exists(fname))
                    {
                        File.Delete(fname);
                    }
                }
                MyRecord.Say("------------------发送完成----------------------------");
            }
            catch (Exception e)
            {
                MyRecord.Say(e);
            }
        }
Ejemplo n.º 32
0
        static public void SelectRecord(string recname)
        {
            uneditable = true;
            // declications
            var rec = MyDataBase.Record[recname];

            currentrec = rec;
            // Activate pages
            MainClass.Pages.Sensitive       = true;
            MainClass.ButForceMod.Sensitive = !rec.MODIFIED;
            MainClass.MenuBoxInput.Hide();
            MainClass.ButRemove.Sensitive = true;
            MainClass.ButRename.Sensitive = true;
            MainClass.ButDupe.Sensitive   = true;


            // Strings and other textbox related types
            foreach (string k in MainClass.DStrings.Keys)
            {
                if (!rec.value.ContainsKey(k))
                {
                    QuickGTK.Warn($"The {MyDataBase.fields[k]} {k} contains no data in this record! Creating data!");
                    //if (MyDataBase.fields[k] == "string") rec.value[k] = ""; else rec.value[k] = "0";
                    switch (MyDataBase.fields[k])
                    {
                    case "bool":
                        rec.value[k] = "FALSE";
                        break;

                    case "int":
                    case "double":
                        rec.value[k] = "0";
                        break;

                    default:
                        rec.value[k] = "";
                        break;
                    }
                }
                var tv = MainClass.DStrings[k];
                //tv.Buffer.Text = rec.value[k];
                tv.Text = rec.value[k];
            }

            // Booleans
            foreach (string k in MainClass.RBTbools.Keys)
            {
                var btrue  = MainClass.RBTbools[k];
                var bfalse = MainClass.RBFbools[k];
                if (!rec.value.ContainsKey(k))
                {
                    //QuickGTK.Warn($"{MyDataBase.fields[k]} contains no data in this record! Creating data!");
                    QuickGTK.Warn($"Boolean {k} contains no data in this record! Creating data!");
                    rec.value[k] = "FALSE";
                }
                btrue.Active  = rec.value[k].ToUpper() == "TRUE";
                bfalse.Active = rec.value[k].ToUpper() != "TRUE";
            }
            // mc
            foreach (string k in MainClass.mc.Keys)
            {
                var mc   = MainClass.mc[k];
                var mcid = MainClass.mcval2index;
                if (!rec.value.ContainsKey(k))
                {
                    QuickGTK.Warn($"{MyDataBase.fields[k]} contains no data in this record! Creating data!");
                    rec.value[k] = "";
                }
                if (!mcid.ContainsKey(k))
                {
                    QuickGTK.Warn("Empty mc list!");
                }
                else
                {
                    var mci   = mcid[k];
                    var value = rec.value[k];
                    if (value != "")
                    {
                        if (mci.ContainsKey(value))
                        {
                            mc.Active = mci[value];
                        }
                        else
                        {
                            QuickGTK.Error($"The value set for field '{k}' is '{value}', however that value is NOT listed!\n\nSetting ignored!");
                        }
                    }
                }
            }
            foreach (string k in MainClass.Dates.Keys)
            {
                if (!rec.value.ContainsKey(k))
                {
                    QuickGTK.Warn($"{MyDataBase.fields[k]} {k} contains no data in record '{recname}'! Creating data!");
                    rec.value[k] = "19/6/1975";
                }
                MainClass.Dates[k].Value = rec.value[k];
            }
            foreach (string k in MainClass.Times.Keys)
            {
                if (!rec.value.ContainsKey(k))
                {
                    QuickGTK.Warn($"{MyDataBase.fields[k]} {k} contains no data in record '{recname}'! Creating data!");
                    rec.value[k] = "01:02:03";
                }
                MainClass.Times[k].Value = rec.value[k];
            }
            foreach (string k in MainClass.Colors.Keys)
            {
                if (!rec.value.ContainsKey(k))
                {
                    QuickGTK.Warn($"{MyDataBase.fields[k]} {k} contains no data in record '{recname}'! Creating data!");
                    rec.value[k] = "255;255;255";
                }
                MainClass.Colors[k].Value = rec.value[k];
            }
            RunAllow();
            uneditable = false;
        }