diff --git a/Src/Dlhis.Entity/Basic/Entity/GainfoSap.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoSap.cs index 8af49906..710ad6b7 100644 --- a/Src/Dlhis.Entity/Basic/Entity/GainfoSap.cs +++ b/Src/Dlhis.Entity/Basic/Entity/GainfoSap.cs @@ -26,7 +26,7 @@ public class GainfoSapEntity public string idno { get; set; } public string native { get; set; } public string sex { get; set; } - public DateTime? birthday { get; set; } + public DateTime birthday { get; set; } public string address { get; set; } public string postcode { get; set; } public string occupation { get; set; } @@ -63,7 +63,7 @@ public class GainfoSapEntity public string mkt { get; set; } public string src { get; set; } public string isowner { get; set; } - public DateTime? createdate { get; set; } + public DateTime createdate { get; set; } public string PERNR { get; set; } diff --git a/Src/Dlhis.ScheduledTask/Common/Comparers/SapPersonComparer.cs b/Src/Dlhis.ScheduledTask/Common/Comparers/SapPersonComparer.cs index f4ef8573..15a68668 100644 --- a/Src/Dlhis.ScheduledTask/Common/Comparers/SapPersonComparer.cs +++ b/Src/Dlhis.ScheduledTask/Common/Comparers/SapPersonComparer.cs @@ -17,11 +17,11 @@ public class SapPersonComparer : IEqualityComparer return x.PERNR == y.PERNR && x.WERKS == y.WERKS && x.ORGEH == y.ORGEH - && SubString(x.NAME, 50) == SubString(y.NAME, 50) + && x.NAME == y.NAME && x.GBDAT == y.GBDAT - && SubString(x.ZZ_SFZH, 18) == SubString(y.ZZ_SFZH, 18) - && SubString(x.ZWORKCODE, 50) == SubString(y.ZWORKCODE, 50) - && SubString(x.ZMOBILE, 20) == SubString(y.ZMOBILE, 20) + && x.ZZ_SFZH == y.ZZ_SFZH + && x.ZWORKCODE == y.ZWORKCODE + && x.ZMOBILE == y.ZMOBILE && x.ZSTATUS == y.ZSTATUS && x.KOSTL == y.KOSTL && x.ZZ_ZD == y.ZZ_ZD @@ -34,7 +34,6 @@ public class SapPersonComparer : IEqualityComparer && x.MNTXT == y.MNTXT && (x.ZXUELI ?? string.Empty).Trim() == (y.ZXUELI ?? string.Empty).Trim() && (x.ZZ_KLX ?? string.Empty) == (y.ZZ_KLX ?? string.Empty) - && x.ZZ_COUNNM == y.ZZ_COUNNM && x.ZZ_GZDJDNM == y.ZZ_GZDJDNM && x.ZZ_GZDCQNM == y.ZZ_GZDCQNM ; @@ -42,14 +41,14 @@ public class SapPersonComparer : IEqualityComparer public int GetHashCode(SapPersonItem obj) { - return obj.PERNR.SafeGetHashCode() + var r = obj.PERNR.SafeGetHashCode() ^ obj.WERKS.SafeGetHashCode() - ^ SubString(obj.ORGEH, 10).SafeGetHashCode() - ^ SubString(obj.NAME, 50).SafeGetHashCode() - ^ SafeParseDate(obj.GBDAT).SafeGetHashCode() - ^ SubString(obj.ZZ_SFZH, 18).SafeGetHashCode() - ^ SubString(obj.ZWORKCODE, 50).SafeGetHashCode() - ^ SubString(obj.ZMOBILE, 20).SafeGetHashCode() + ^ obj.ORGEH.SafeGetHashCode() + ^ obj.NAME.SafeGetHashCode() + ^ obj.GBDAT.SafeGetHashCode() + ^ obj.ZZ_SFZH.SafeGetHashCode() + ^ obj.ZWORKCODE.SafeGetHashCode() + ^ obj.ZMOBILE.SafeGetHashCode() ^ obj.ZSTATUS.SafeGetHashCode() ^ obj.KOSTL.SafeGetHashCode() ^ obj.ZZ_ZD.SafeGetHashCode() @@ -61,41 +60,11 @@ public class SapPersonComparer : IEqualityComparer ^ obj.MASSN.SafeGetHashCode() ^ obj.MNTXT.SafeGetHashCode() ^ obj.ZXUELI.SafeGetHashCode() - ^ (obj.ZZ_KLX ?? "").SafeGetHashCode() - ^ obj.ZZ_COUNNM.SafeGetHashCode() + ^ obj.ZZ_KLX.SafeGetHashCode() ^ obj.ZZ_GZDJDNM.SafeGetHashCode() ^ obj.ZZ_GZDCQNM.SafeGetHashCode() ; - } - - private static string SubString(string s, int len) - { - if (string.IsNullOrWhiteSpace(s)) - { - return s?.Trim() ?? ""; - } - s = s.Trim(); - var bs = Encoding.UTF8.GetBytes(s); - if (bs.Length <= len) - { - return s; - } - var bytes = new byte[len]; - Buffer.BlockCopy(bs, 0, bytes, 0, len); - return Encoding.UTF8.GetString(bytes); - } - - - private static DateTime? SafeParseDate(string str) - { - if (str == "0000-00-00" || str == "0001-01-01" || str == "1900-01-01") - return null; - - if (DateTime.TryParse(str, out var d)) - { - return d; - } - return null; + return r; } } diff --git a/Src/Dlhis.ScheduledTask/Common/Dto/SapPersonItem.cs b/Src/Dlhis.ScheduledTask/Common/Dto/SapPersonItem.cs index 01cc0a0d..262b4ff4 100644 --- a/Src/Dlhis.ScheduledTask/Common/Dto/SapPersonItem.cs +++ b/Src/Dlhis.ScheduledTask/Common/Dto/SapPersonItem.cs @@ -148,7 +148,7 @@ public class SapPersonItem /// /// /// - public string GBDAT { get; set; } + public DateTime GBDAT { get; set; } /// /// /// @@ -172,7 +172,7 @@ public class SapPersonItem /// /// /// - public string ZRZRQ { get; set; } + public DateTime ZRZRQ { get; set; } /// /// /// diff --git a/Src/Dlhis.ScheduledTask/Common/Services/Implements/GainfoUpdateService.cs b/Src/Dlhis.ScheduledTask/Common/Services/Implements/GainfoUpdateService.cs index 8372adc3..bacea951 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/Implements/GainfoUpdateService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/Implements/GainfoUpdateService.cs @@ -47,6 +47,25 @@ public class GainfoUpdateService : IGainfoUpdateService try { + //var pJson = "{\"KOSTL\":\"157090008\",\"ZLZRQ\":\"2024-04-01\",\"ZZ_SFZH\":\"510722198607231917\",\"STELL\":\"40120430\",\"STELL_NM\":\"环保主管\",\"ZZ_KLX\":\"2\",\"PERNR\":\"00050572\",\"ZWORKCODE\":\"SC000323\",\"MASSN\":\"ZD\",\"MNTXT\":\"离职\",\"MASSG\":\"48\",\"MGTXT\":\"主动离职\",\"ZSTATUS\":\"1\",\"STAT2\":\"0\",\"BEGDA\":\"2024-04-01\",\"ENDDA\":\"9999-12-31\",\"WERKS\":\"1570\",\"PERSG\":\"1\",\"PERSK\":\"10\",\"BTRTL\":\"13\",\"ANSVH\":\"4\",\"MOABW\":\"28\",\"ORGEH\":\"00210108\",\"PLANS\":\"40120430\",\"ZZ_ZYSF\":\"1\",\"ZZ_AQJB\":\"30\",\"ZZ_ZD\":\"3\",\"ZZ_SJGH\":\"SC010178\",\"ZZ_BGZT\":null,\"Z_ZJ\":\"M2\",\"ZZ_XSQY\":null,\"ZZ_LOC\":\"乐山\",\"ZZ_COUN\":\"中国\",\"ZZ_CITY\":\"乐山\",\"NACHN\":\"王\",\"VORNA\":\"大海\",\"NAME\":\"王大海\",\"GESCH\":\"1\",\"GBDAT\":\"1986-07-23\",\"NATIO\":\"CN\",\"ZZ_QFRQ\":\"2017-11-08\",\"ZMOBILE\":\"15984398068\",\"ZEMAIL\":\"dahai.wang@jinkosolar.com\",\"ZADZH\":\"SC000323\",\"ZRZRQ\":\"2019-05-21\",\"DAT01\":\"2019-05-21\",\"ZCJRQ\":\"2019-05-21\",\"ZZZRQ\":\"2019-08-31\",\"ZXUELI\":\"本科\",\"ZZ_ZPQD\":\"19\",\"ZZ_COUNNM\":null,\"ZZ_GZDJDNM\":\"乐山基地\",\"ZZ_GZDCQNM\":\"乐山\"}"; + //var personResp = new SapPersonResponse + //{ + // Person = new SapPerson + // { + // Items = new List + // { + // pJson.ToObject() + // } + // }, + // DepartmentInfo = new SapPerson() + // { + // Items = new List() + // }, + // JobStatusInfo = new SapPerson() + // { + // Items = new List() + // } + //}; var personResp = await _jinkoSapService.GetPersonsByWerkAsync(werk); var persons = personResp.Person.Items; _departmentChanges = personResp.DepartmentInfo.Items; @@ -252,6 +271,11 @@ public class GainfoUpdateService : IGainfoUpdateService STELL = item.STELL, Z_ZJ = item.Z_ZJ, ZZ_ZD = item.ZZ_ZD, + MNTXT = item.MNTXT, + MASSN = item.MASSN, + ZSTATUS = item.ZSTATUS, + ZLZRQ = item.ZLZRQ, + createdate = item.createdate, ZZ_GZDJDNM = item.ZZ_GZDJDNM, ZZ_GZDCQNM = item.ZZ_GZDCQNM, }) @@ -336,27 +360,29 @@ public class GainfoUpdateService : IGainfoUpdateService } } - var needRemove = sapList.Intersect(last, new SapPersonComparer()); + var needRemove = sapList.Intersect(last, new SapPersonComparer()).ToList(); return sapList.Except(needRemove, new SapPersonComparer()).ToList(); } private List LoadData() { - var gainfo = _dbContext.Queryable().ToList(); + // var pJson = "{\r\n \"id\": 0,\r\n \"ano\": null,\r\n \"class\": \"C\",\r\n \"passwd\": null,\r\n \"question\": null,\r\n \"answer\": null,\r\n \"gname\": \"王大海\",\r\n \"ename\": \"SC000323\",\r\n \"country\": null,\r\n \"idcls\": \"ID\",\r\n \"idno\": \"510722198607231917\",\r\n \"native\": \"510722\",\r\n \"sex\": \"M\",\r\n \"birthday\": \"1986-07-23T00:00:00\",\r\n \"address\": \"\",\r\n \"postcode\": null,\r\n \"occupation\": \"99\",\r\n \"appellation\": \"00210108\",\r\n \"nation\": \"01\",\r\n \"phone\": \"15984398068\",\r\n \"fax\": null,\r\n \"mobile\": null,\r\n \"email\": \"本科\",\r\n \"web\": \"40120430\",\r\n \"vip\": null,\r\n \"sec\": null,\r\n \"cropsno\": null,\r\n \"cropname\": null,\r\n \"fancy\": null,\r\n \"remark\": \"入职时间:2019-05-21 离职时间:2024-04-01 变更原因:主动离职\",\r\n \"amount\": 0,\r\n \"days\": 0,\r\n \"consume01\": 0,\r\n \"consume02\": 0,\r\n \"consume03\": 0,\r\n \"consume04\": 0,\r\n \"log_id\": \"XX\",\r\n \"log_shift\": \"1\",\r\n \"log_date\": null,\r\n \"log_ip\": \"127.0.0.1\",\r\n \"times\": 0,\r\n \"logmark\": 0,\r\n \"rmcode\": null,\r\n \"mkt\": null,\r\n \"src\": null,\r\n \"isowner\": \"F\",\r\n \"createdate\": \"2019-05-21T00:00:00\",\r\n \"PERNR\": \"00050572\",\r\n \"WERKS\": \"1570\",\r\n \"ZSTATUS\": \"1\",\r\n \"KOSTL\": \"157090008\",\r\n \"ZZ_ZD\": \"3\",\r\n \"Z_ZJ\": \"M2\",\r\n \"STELL\": \"40120430\",\r\n \"STELL_NM\": \"环保主管\",\r\n \"ZLZRQ\": \"2024-04-01\",\r\n \"MASSN\": \"ZD\",\r\n \"MNTXT\": \"离职\",\r\n \"MASSG\": null,\r\n \"MGTXT\": null,\r\n \"logdate\": \"2024-03-14T00:28:15\",\r\n \"updatelogdate\": null,\r\n \"guestno\": null,\r\n \"ZZ_KLX\": \"2\",\r\n \"DAT01\": null,\r\n \"ZZ_COUNNM\": null,\r\n \"ZZ_GZDJDNM\": \"乐山基地\",\r\n \"ZZ_GZDCQNM\": \"乐山\"\r\n}"; + //var gainfos = new List() { pJson.ToObject() }; + var gainfos = _dbContext.Queryable().ToList(); - return gainfo.Select(x => new SapPersonItem + return gainfos.Select(x => new SapPersonItem { NAME = x.gname, ZWORKCODE = x.ename, ZZ_SFZH = x.idno, - GBDAT = x.birthday.Value.ToString("yyyy-MM-dd"), + GBDAT = x.birthday, ZZ_KLX = x.ZZ_KLX, ZXUELI = x.email?.Trim() ?? string.Empty, ORGEH = x.appellation, ZMOBILE = x.phone, ZSTATUS = x.ZSTATUS, - ZRZRQ = x.createdate.Value.ToString("yyyy-MM-dd"), + ZRZRQ = x.createdate, PERNR = x.PERNR, WERKS = x.WERKS, KOSTL = x.KOSTL, @@ -384,11 +410,9 @@ public class GainfoUpdateService : IGainfoUpdateService { //var position = _positions.FirstOrDefault(x => x.No == person.PLANS); - var rzrq = SafeParseDate(person.ZRZRQ); + var rzrq = person.ZRZRQ; var lzrq = person.ZLZRQ; - var rmk = ""; - if (rzrq != null) - rmk = $"入职时间:{rzrq.Value.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)} "; + var rmk = $"入职时间:{rzrq.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)} "; if (lzrq != null && lzrq.Value.ToString("yyyy-MM-dd") != "1900-01-01") rmk += $"离职时间:{lzrq.Value.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)} "; @@ -405,13 +429,13 @@ public class GainfoUpdateService : IGainfoUpdateService gname = person.NAME, ename = person.ZWORKCODE, idno = person.ZZ_SFZH, - birthday = SafeParseDate(person.GBDAT).Value, + birthday = person.GBDAT, ZZ_KLX = person.ZZ_KLX, email = person.ZXUELI, appellation = person.ORGEH, phone = person.ZMOBILE, ZSTATUS = person.ZSTATUS, - createdate = Convert.ToDateTime(person.ZRZRQ), + createdate = person.ZRZRQ, PERNR = person.PERNR, WERKS = person.WERKS, KOSTL = person.KOSTL,