spDbContext.cs 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.Extensions.Configuration;
  3. using Microsoft.Extensions.Logging;
  4. using Microsoft.Extensions.Logging.Debug;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Configuration;
  8. using System.Data;
  9. using wispro.sp.entity;
  10. using wispro.sp.entity.CompareCase;
  11. using wispro.sp.entity.workflowDefine;
  12. using wispro.sp.entity.workflowInstance;
  13. namespace wispro.sp.api
  14. {
  15. public partial class spDbContext : DbContext
  16. {
  17. [Obsolete]
  18. public static readonly LoggerFactory LoggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() });
  19. public spDbContext()
  20. {
  21. }
  22. public spDbContext(DbContextOptions<spDbContext> options)
  23. : base(options)
  24. {
  25. }
  26. public virtual DbSet<CalMonth> CalMonths { get; set; }
  27. public virtual DbSet<Customer> Customers { get; set; }
  28. public virtual DbSet<ItemStaff> ItemStaffs { get; set; }
  29. public virtual DbSet<PerformanceItem> PerformanceItems { get; set; }
  30. public virtual DbSet<StaffGrade> StaffGrades { get; set; }
  31. public virtual DbSet<VerifyCoefficient> VerifyCoefficients { get; set; }
  32. public virtual DbSet<Staff> Staffs { get; set; }
  33. public virtual DbSet<Message> Messages { get; set; }
  34. public virtual DbSet<MessageReadRecord> MessageReadRecords { get;set;}
  35. public virtual DbSet<MessagePerformanceItem> MessagePerformanceItems { get; set; }
  36. public virtual DbSet<AttachFile> AttachFiles { get; set; }
  37. public virtual DbSet<BasePointRule> BasePointRules { get; set; }
  38. public virtual DbSet<StaffStatistics> StaffStatistics { get; set; }
  39. public virtual DbSet<InputField> InputFields { get; set; }
  40. public virtual DbSet<InputFieldValue> InputFieldValues { get; set; }
  41. public virtual DbSet<AppealType> AppealTypes { get; set; }
  42. public virtual DbSet<AppealRecord> AppealRecords { get; set; }
  43. public virtual DbSet<SelectValue> SelectValues { get; set; }
  44. public virtual DbSet<CaseCeoffcient> CaseCeoffcients { get; set; }
  45. public virtual DbSet<Department> Departments { get; set; }
  46. public virtual DbSet<Position> Positions { get; set; }
  47. public virtual DbSet<StaffStatisticsforLevel> StaffStatisticsforLevels { get; set; }
  48. public virtual DbSet<AllocationRatio> AllocationRatios { get; set; }
  49. public virtual DbSet<CaseInfo> CaseInfos { get; set; }
  50. public virtual DbSet<CompareResult> CaseCompareResults { get; set; }
  51. #region 流程定义
  52. public virtual DbSet<Workflow> Workflows { get; set; }
  53. public virtual DbSet<Step> Steps { get; set; }
  54. public virtual DbSet<TrasferCondition> TrasferConditions { get; set; }
  55. public virtual DbSet<entity.workflowDefine.Action> Actions { get; set; }
  56. public virtual DbSet<InputValueSetting> InputValueSettings { get; set; }
  57. public virtual DbSet<WorkflowInstance> WorkflowInstances { get; set; }
  58. public virtual DbSet<InputValue> InputValues { get; set; }
  59. public virtual DbSet<StepInstance> StepInstances { get; set; }
  60. #endregion
  61. #region 专案数据库
  62. public virtual DbSet<ProjectInfo> ProjectInfos { get; set; }
  63. public virtual DbSet<ProjectContentRecord> ProjectContentRecords { get; set; }
  64. public virtual DbSet<ProjectWorkContent> ProjectWorkContents { get; set; }
  65. #endregion
  66. public virtual DbSet<DepartmentPosition> DepartmentPositions { get; set; }
  67. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  68. {
  69. if (!optionsBuilder.IsConfigured)
  70. {
  71. optionsBuilder.UseSqlServer(utility.ConfigHelper.GetSectionValue("ConnectionStrings:DefaultConnect"));// "Data Source=(local);Initial Catalog=spDB;User ID=sa;Password=Lqftiu807005");// Configuration.GetConnectionString("DefaultConnect"));
  72. //ConfigurationManager.AppSettings["ValidAudience"]
  73. }
  74. //_ = optionsBuilder.UseLoggerFactory(LoggerFactory);
  75. }
  76. protected override void OnModelCreating(ModelBuilder modelBuilder)
  77. {
  78. modelBuilder.Entity<CaseCeoffcient>( entity=>
  79. {
  80. entity.ToTable("CaseCeofficient");
  81. entity.HasKey(e=>e.Ceoffcient);
  82. });
  83. modelBuilder.Entity<BasePointRule>(entity=> {
  84. entity.ToTable("BasePointRule");
  85. entity.Property(e => e.PointExpress).HasMaxLength(100);
  86. entity.Property(e => e.Rule).HasMaxLength(1000);
  87. entity.Property(e => e.Type).HasMaxLength(20);
  88. });
  89. modelBuilder.Entity<CalMonth>(entity =>
  90. {
  91. entity.ToTable("CalMonth");
  92. entity.Property(e => e.Year).HasColumnName("year");
  93. entity.Property(e => e.Month).HasColumnName("month");
  94. entity.Property(e => e.Status).HasColumnName("status");
  95. }
  96. ) ;
  97. modelBuilder.Entity<Customer>(entity =>
  98. {
  99. entity.ToTable("Customer");
  100. entity.Property(e => e.Address).HasMaxLength(500);
  101. entity.Property(e => e.ContactMan).HasMaxLength(50);
  102. entity.Property(e => e.Name)
  103. .IsRequired()
  104. .HasMaxLength(200);
  105. entity.Property(e => e.Phone).HasMaxLength(50);
  106. entity.HasOne(d => d.ResponseMan)
  107. .WithMany(p => p.Customers)
  108. .HasForeignKey(d => d.ResponseManId)
  109. .HasConstraintName("FK_Customer_Staff");
  110. });
  111. modelBuilder.Entity<ItemStaff>(entity =>
  112. {
  113. entity.HasKey(e => new { e.ItemId, e.DoPersonId });
  114. entity.ToTable("ItemStaff");
  115. entity.Property(e => e.PerformancePoint);//.HasColumnType("numeric(18, 2)");
  116. entity.HasOne(d => d.DoPerson)
  117. .WithMany(p => p.ItemStaffs)
  118. .HasForeignKey(d => d.DoPersonId)
  119. .OnDelete(DeleteBehavior.ClientSetNull)
  120. .HasConstraintName("FK_ItemStaff_Staff");
  121. entity.HasOne(d => d.Item)
  122. .WithMany(p => p.ItemStaffs)
  123. .HasForeignKey(d => d.ItemId)
  124. .OnDelete(DeleteBehavior.ClientSetNull)
  125. .HasConstraintName("FK_ItemStaff_PerformanceItem");
  126. });
  127. modelBuilder.Entity<PerformanceItem>(entity =>
  128. {
  129. entity.ToTable("PerformanceItem");
  130. entity.Property(e => e.ApplicationName).HasMaxLength(500);
  131. entity.Property(e => e.ApplicationType).HasMaxLength(50);
  132. entity.Property(e => e.BasePoint);
  133. entity.Property(e => e.BusinessType).HasMaxLength(50);
  134. entity.Property(e => e.CaseCoefficient).HasMaxLength(10);
  135. entity.Property(e => e.CaseName).HasMaxLength(500);
  136. entity.Property(e => e.CaseNo).HasMaxLength(50);
  137. entity.Property(e => e.CaseStage).HasMaxLength(50);
  138. entity.Property(e => e.CaseState).HasMaxLength(50);
  139. entity.Property(e => e.CaseType).HasMaxLength(50);
  140. entity.Property(e => e.EntrustingDate).HasColumnType("date");
  141. entity.Property(e => e.CustomerLimitDate).HasColumnType("date");
  142. entity.Property(e => e.DoItem).HasMaxLength(50);
  143. entity.Property(e => e.DoItemCoefficient).HasMaxLength(50);
  144. entity.Property(e => e.DoItemState).HasMaxLength(50);
  145. entity.Property(e => e.FinalizationDate).HasColumnType("date");
  146. entity.Property(e => e.FinishedDate).HasColumnType("date");
  147. entity.Property(e => e.FirstDraftDate).HasColumnType("date");
  148. entity.Property(e => e.InternalDate).HasColumnType("date");
  149. entity.Property(e => e.OverDueMemo).HasMaxLength(2000);
  150. entity.Property(e => e.PreOastaffId).HasColumnName("PreOAStaffId");
  151. entity.Property(e => e.ReturnDate).HasColumnType("date");
  152. entity.HasOne(d => d.Customer)
  153. .WithMany(p => p.PerformanceItems)
  154. .HasForeignKey(d => d.CustomerId)
  155. .HasConstraintName("FK_PerformanceItem_Customer");
  156. entity.HasOne(d => d.PreOastaff)
  157. .WithMany()
  158. .HasForeignKey(d => d.PreOastaffId)
  159. .HasConstraintName("FK_PerformanceItem_Staff");
  160. entity.HasOne(d => d.Reviewer)
  161. .WithMany(p => p.ReviewerItems)
  162. .HasForeignKey(d => d.ReviewerId)
  163. .HasConstraintName("FK_PerformanceItem_Reviewer");
  164. entity.HasOne(d => d.ExternalHandler)
  165. .WithMany(p => p.ExternalHandlerItems)
  166. .HasForeignKey(d => d.ExternalHandlerId)
  167. .HasConstraintName("FK_PerformanceItem_CustomerInterface");
  168. entity.HasOne(d => d.WorkflowUser)
  169. .WithMany()
  170. .HasForeignKey(d => d.WorkflowUserId)
  171. .HasConstraintName("FK_PerformanceItem_WorkflowUser");
  172. entity.HasOne(d => d.CalMonth)
  173. .WithMany(p => p.PerformanceItems)
  174. .HasForeignKey(d => d.CalMonthId)
  175. .HasConstraintName("FK_PerformanceItem_CalMonth");
  176. });
  177. #region 专案
  178. modelBuilder.Entity<ProjectInfo>(entity =>
  179. {
  180. entity.ToTable("ProjectInfo");
  181. entity.HasKey(entity=>entity.CaseNo);
  182. entity.HasOne(d => d.Customer)
  183. .WithMany()
  184. .HasForeignKey(d => d.CustomerId)
  185. .HasConstraintName("FK_ProjectInfo_Customer");
  186. entity.HasOne(d => d.WorkflowUser)
  187. .WithMany()
  188. .HasForeignKey(d => d.WorkflowUserId)
  189. .HasConstraintName("FK_ProjectInfo_Staff");
  190. entity.HasOne(d => d.Reviewer)
  191. .WithMany()
  192. .HasForeignKey(d => d.ReviewerId)
  193. .HasConstraintName("FK_ProjectInfo_Reviewer");
  194. });
  195. modelBuilder.Entity<ProjectContentRecord>(entity =>
  196. {
  197. entity.ToTable("ProjectContentRecord");
  198. entity.HasOne(d => d.CalMonth)
  199. .WithMany()
  200. .HasForeignKey(d => d.CalMonthId)
  201. .HasConstraintName("FK_ProjectContentRecord_CalMonth");
  202. entity.HasOne(d => d.Project)
  203. .WithMany()
  204. .HasForeignKey(d => d.ProjectNo)
  205. .HasConstraintName("FK_ProjectContentRecord_ProjectInfo");
  206. entity.HasOne(d => d.Staff)
  207. .WithMany()
  208. .HasForeignKey(d => d.StaffId)
  209. .HasConstraintName("FK_Staff_ProjectContentRecord");
  210. entity.HasOne(d => d.Reviewer)
  211. .WithMany()
  212. .HasForeignKey(d => d.ReviewerId)
  213. .HasConstraintName("FK_Reviewer_ProjectContentRecord");
  214. });
  215. modelBuilder.Entity<ProjectWorkContent>(entity =>
  216. {
  217. entity.ToTable("ProjectWorkContent");
  218. entity.HasOne(d => d.ContentRecord)
  219. .WithMany(d=>d.ProjectWorkContents)
  220. .HasForeignKey(d=>d.ContentRecordId)
  221. .HasConstraintName("FK_ProjectRecord_WorkflowContent");
  222. });
  223. #endregion
  224. modelBuilder.Entity<StaffGrade>(entity =>
  225. {
  226. entity.ToTable("StaffGrade");
  227. entity.Property(e => e.Coefficient);//.HasColumnType("numeric(18, 2)");
  228. entity.Property(e => e.Grade)
  229. .IsRequired()
  230. .HasMaxLength(5)
  231. .IsFixedLength(true);
  232. });
  233. modelBuilder.Entity<VerifyCoefficient>(entity =>
  234. {
  235. entity.HasKey(e => new { e.CheckerId, e.DoPersonId });
  236. entity.ToTable("VerifyCoefficient");
  237. entity.Property(e => e.Coefficient);//.HasColumnType("numeric(18, 2)");
  238. entity.HasOne(d => d.Checker)
  239. .WithMany(p => p.VerifyCoefficientCheckers)
  240. .HasForeignKey(d => d.CheckerId)
  241. .OnDelete(DeleteBehavior.ClientSetNull)
  242. .HasConstraintName("FK_VerifyCoefficient_StaffGrade");
  243. entity.HasOne(d => d.DoPerson)
  244. .WithMany(p => p.VerifyCoefficientDoPeople)
  245. .HasForeignKey(d => d.DoPersonId)
  246. .OnDelete(DeleteBehavior.ClientSetNull)
  247. .HasConstraintName("FK_VerifyCoefficient_StaffGrade1");
  248. });
  249. modelBuilder.Entity<Staff>(entity =>
  250. {
  251. entity.ToTable("Staff");
  252. //entity.Property(e => e.Id).ValueGeneratedNever();
  253. entity.Property(e => e.Account)
  254. .IsRequired()
  255. .HasMaxLength(50);
  256. entity.Property(e => e.Department).HasMaxLength(50);
  257. entity.Property(e => e.EntyDate).HasColumnType("date");
  258. entity.Property(e => e.IsCalPerformsnce).HasColumnName("isCalPerformsnce");
  259. entity.Property(e => e.Name)
  260. .IsRequired()
  261. .HasMaxLength(50);
  262. entity.Property(e => e.Password).IsRequired();
  263. entity.Property(e => e.Status)
  264. .IsRequired()
  265. .HasMaxLength(25);
  266. entity.Property(e => e.WorkPlace).HasMaxLength(50);
  267. entity.HasOne(d => d.StaffGrade)
  268. .WithMany(p => p.Staff)
  269. .HasForeignKey(d => d.StaffGradeId)
  270. .OnDelete(DeleteBehavior.ClientSetNull)
  271. .HasConstraintName("FK_Staff_StaffGrade");
  272. });
  273. modelBuilder.Entity<StaffStatistics>(entity =>
  274. {
  275. entity.ToTable("StaffStatistics");
  276. entity.HasOne(d => d.CalMonth)
  277. .WithMany()
  278. .HasForeignKey(d=>d.CalMonthId);
  279. entity.HasOne(d => d.Staff)
  280. .WithMany()
  281. .HasForeignKey(d => d.StaffId);
  282. entity.HasOne(d => d.Item)
  283. .WithMany()
  284. .HasForeignKey(d => d.ItemId)
  285. .OnDelete(DeleteBehavior.ClientSetNull)
  286. .HasConstraintName("FK_StaffStatistics_PerformanceItem");
  287. });
  288. modelBuilder.Entity<StaffStatisticsforLevel>(entity =>
  289. {
  290. entity.ToTable("StaffStatisticsforLevel");
  291. entity.HasOne(d => d.CalMonth)
  292. .WithMany()
  293. .HasForeignKey(d => d.CalMonthId);
  294. entity.HasOne(d => d.Staff)
  295. .WithMany()
  296. .HasForeignKey(d => d.StaffId);
  297. entity.HasOne(d => d.Grade)
  298. .WithMany()
  299. .HasForeignKey(d => d.GradeId);
  300. });
  301. modelBuilder.Entity<AllocationRatio>(entity =>
  302. {
  303. entity.HasKey(e => new { e.ItemId, e.PersonId });
  304. entity.ToTable("AllocationRatio");
  305. entity.Property(e => e.Ratio);//.HasColumnType("numeric(18, 2)");
  306. entity.Property(e => e.ActualAmount);
  307. entity.HasOne(d => d.Person)
  308. .WithMany(p => p.AllocationRatios)
  309. .HasForeignKey(d => d.PersonId)
  310. .OnDelete(DeleteBehavior.ClientSetNull)
  311. .HasConstraintName("FK_AllocationRatio_Staff");
  312. entity.HasOne(d => d.Item)
  313. .WithMany(p => p.AllocationRatios)
  314. .HasForeignKey(d => d.ItemId)
  315. .OnDelete(DeleteBehavior.ClientSetNull)
  316. .HasConstraintName("FK_FK_AllocationRatio_PerformanceItem");
  317. });
  318. modelBuilder.Entity<Message>(entity =>
  319. {
  320. //entity.HasKey(e => e.Id);
  321. entity.ToTable("Message");
  322. entity.Property(e => e.Type);
  323. entity.Property(e => e.MessageInfo).HasMaxLength(500);
  324. entity.HasOne(d => d.From)
  325. .WithMany()
  326. .HasForeignKey(d => d.FromId)
  327. .OnDelete(DeleteBehavior.ClientSetNull)
  328. .HasConstraintName("FK_From_Staff");
  329. });
  330. modelBuilder.Entity<MessageReadRecord>(entity =>
  331. {
  332. entity.HasKey(e => new { e.MessageId,e.StaffId});
  333. entity.ToTable("MessageReadRecord");
  334. entity.Property(e => e.isReaded);
  335. entity.HasOne(d => d.Staff)
  336. .WithMany()
  337. .HasForeignKey(d => d.StaffId)
  338. .OnDelete(DeleteBehavior.ClientSetNull)
  339. .HasConstraintName("FK_MessageReadRecord_Staff");
  340. entity.HasOne(d => d.Message)
  341. .WithMany()
  342. .HasForeignKey(d => d.MessageId)
  343. .OnDelete(DeleteBehavior.ClientSetNull)
  344. .HasConstraintName("FK_MessageReadRecord_Message");
  345. });
  346. modelBuilder.Entity<MessagePerformanceItem>( entity =>
  347. {
  348. entity.HasKey(e=> new { e.ItemId,e.MessageId});
  349. entity.HasOne(d => d.Message)
  350. .WithMany(m => m.RelatedItem)
  351. .HasForeignKey(d => d.MessageId)
  352. .HasConstraintName("FK_MessagePerformanceItem_Message");
  353. entity.HasOne(d => d.Item )
  354. .WithMany()
  355. .HasForeignKey(d => d.ItemId)
  356. .HasConstraintName("FK_MessagePerformanceItem_Item");
  357. });
  358. modelBuilder.Entity<AttachFile>(entity =>
  359. {
  360. entity.ToTable("AttachFile");
  361. entity.Property(e=>e.Name).HasMaxLength(200);
  362. entity.Property(e => e.SavePath).HasMaxLength(200);
  363. entity.HasOne(d => d.UploadUser)
  364. .WithMany()
  365. .HasForeignKey(d => d.UploadUserId)
  366. .HasConstraintName("FK_AttachFile_UpdateUser")
  367. .OnDelete(DeleteBehavior.NoAction);
  368. entity.HasOne(d => d.AppealRecord)
  369. .WithMany(a=>a.AttachFiles)
  370. .HasForeignKey(d => d.AppealRecordId)
  371. .HasConstraintName("FK_AttachFile_AppealRecord")
  372. .IsRequired(false);
  373. });
  374. modelBuilder.Entity<AppealType>(entity =>
  375. {
  376. entity.ToTable("AppealType");
  377. entity.Property(e => e.Name).HasMaxLength(50);
  378. entity.Property(e => e.ReviewerExpress).HasMaxLength(500);
  379. entity.Property(e => e.CanDoExpress).HasMaxLength(500);
  380. });
  381. modelBuilder.Entity<AppealRecord>(entity =>
  382. {
  383. entity.ToTable("AppealRecord");
  384. entity.Property(e => e.Reason).HasMaxLength(500);
  385. entity.HasOne(d => d.Creater)
  386. .WithMany()
  387. .HasForeignKey(d => d.CreaterId);
  388. entity.HasOne(d => d.Reviewer)
  389. .WithMany().OnDelete(DeleteBehavior.NoAction)
  390. .HasForeignKey(d => d.ReviewerId);
  391. entity.HasOne(d => d.Type)
  392. .WithMany()
  393. .OnDelete(DeleteBehavior.NoAction)
  394. .HasForeignKey(d => d.TypeId);
  395. entity.HasOne(d => d.Item)
  396. .WithMany()
  397. .HasForeignKey(d=>d.ItemId);
  398. }) ;
  399. modelBuilder.Entity<InputField>(entity=> {
  400. entity.ToTable("InputField");
  401. entity.Property(e=>e.FieldName).HasMaxLength(50);
  402. entity.Property(e => e.FieldType).HasMaxLength(50);
  403. entity.Property(e => e.MapObjectField).HasMaxLength(50);
  404. entity.HasOne(d => d.AppealType)
  405. .WithMany()
  406. .HasForeignKey(d=>d.AppealTypeId);
  407. //entity.HasKey(d=>new { d.AppealTypeId,d.AppealState});
  408. });
  409. modelBuilder.Entity<SelectValue>(entity => {
  410. entity.ToTable("SelectValue");
  411. entity.HasOne(d => d.InputField)
  412. .WithMany(s=>s.SelectValues)
  413. .HasForeignKey(d => d.InputFieldId);
  414. //entity.HasKey(d=>new { d.AppealTypeId,d.AppealState});
  415. });
  416. modelBuilder.Entity<InputFieldValue>(entity => {
  417. entity.ToTable("InputFieldValue");
  418. entity.Property(e => e.Value).HasMaxLength(500);
  419. entity.HasOne(d => d.InputField)
  420. .WithMany()
  421. .HasForeignKey(d => d.InputFieldId);
  422. entity.HasOne(d => d.AppealRecord)
  423. .WithMany()
  424. .HasForeignKey(d => d.AppealRecordId);
  425. //entity.HasKey(d=>new { d.AppealRecordId,d.InputFieldId});
  426. });
  427. modelBuilder.Entity<Department>(entity => {
  428. entity.ToTable("Department");
  429. });
  430. modelBuilder.Entity<Position>(entity => {
  431. entity.ToTable("Position");
  432. });
  433. modelBuilder.Entity<DepartmentPosition>(entity=> {
  434. entity.ToTable("DepartmentPosition");
  435. entity.HasOne(d => d.department)
  436. .WithMany()
  437. .HasForeignKey(d => d.departmentId);
  438. entity.HasOne(d => d.Position)
  439. .WithMany()
  440. .HasForeignKey(d=>d.PositionId);
  441. entity.HasOne(d => d.Staff)
  442. .WithMany(d=>d.Positions)
  443. .HasForeignKey(d => d.StaffId);
  444. });
  445. modelBuilder.Entity<StaffGrade>().HasData(
  446. new StaffGrade[]
  447. {
  448. new StaffGrade() {Id=1, Grade = "S级", Coefficient = 1.2},
  449. new StaffGrade() {Id=2, Grade = "A3级", Coefficient = 1.1},
  450. new StaffGrade() {Id =3, Grade = "A2级", Coefficient = 1.1},
  451. new StaffGrade() {Id=4, Grade = "A1级", Coefficient = 1.1},
  452. new StaffGrade() {Id=5, Grade = "B3级", Coefficient = 1.0},
  453. new StaffGrade() {Id=6, Grade = "B2级", Coefficient = 1.0},
  454. new StaffGrade() {Id=7, Grade = "B1级", Coefficient = 0.9},
  455. new StaffGrade() {Id=8, Grade = "C3级", Coefficient = 0.9},
  456. new StaffGrade() {Id=9, Grade = "C2级", Coefficient = 0.7},
  457. new StaffGrade() {Id= 10, Grade = "C1级", Coefficient = 0.7},
  458. new StaffGrade() {Id=11, Grade = "D3级", Coefficient = 0.6},
  459. new StaffGrade() {Id=12, Grade = "D2级", Coefficient = 0.6},
  460. new StaffGrade() {Id=13, Grade = "D1级", Coefficient = 0.5},
  461. new StaffGrade() {Id=14, Grade = "A级", Coefficient = 1.1},
  462. new StaffGrade() {Id=15, Grade = "B级", Coefficient = 1.0},
  463. new StaffGrade() {Id=16, Grade = "C级", Coefficient = 0.9}
  464. });
  465. modelBuilder.Entity<VerifyCoefficient>().HasData(
  466. new VerifyCoefficient[]
  467. {
  468. new VerifyCoefficient() { CheckerId = 1, DoPersonId =5, Coefficient =0.3},
  469. new VerifyCoefficient() { CheckerId = 1, DoPersonId =6, Coefficient =0.3},
  470. new VerifyCoefficient() { CheckerId = 1, DoPersonId =7, Coefficient =0.3},
  471. new VerifyCoefficient() { CheckerId = 1, DoPersonId =8, Coefficient =0.3},
  472. new VerifyCoefficient() { CheckerId = 1, DoPersonId =9, Coefficient =0.4},
  473. new VerifyCoefficient() { CheckerId = 1, DoPersonId =10, Coefficient =0.4},
  474. new VerifyCoefficient() { CheckerId = 1, DoPersonId =11, Coefficient =0.5},
  475. new VerifyCoefficient() { CheckerId = 1, DoPersonId =12, Coefficient =0.5},
  476. new VerifyCoefficient() { CheckerId = 1, DoPersonId =13, Coefficient =0.6},
  477. new VerifyCoefficient() { CheckerId = 2, DoPersonId =5, Coefficient =0.2},
  478. new VerifyCoefficient() { CheckerId = 2, DoPersonId =6, Coefficient =0.2},
  479. new VerifyCoefficient() { CheckerId = 2, DoPersonId =7, Coefficient =0.2},
  480. new VerifyCoefficient() { CheckerId = 2, DoPersonId =8, Coefficient =0.2},
  481. new VerifyCoefficient() { CheckerId = 2, DoPersonId =9, Coefficient =0.3},
  482. new VerifyCoefficient() { CheckerId = 2, DoPersonId =10, Coefficient =0.3},
  483. new VerifyCoefficient() { CheckerId = 2, DoPersonId =11, Coefficient =0.4},
  484. new VerifyCoefficient() { CheckerId = 2, DoPersonId =12, Coefficient =0.4},
  485. new VerifyCoefficient() { CheckerId = 2, DoPersonId =13, Coefficient =0.5},
  486. new VerifyCoefficient() { CheckerId = 3, DoPersonId =5, Coefficient =0.2},
  487. new VerifyCoefficient() { CheckerId = 3, DoPersonId =6, Coefficient =0.2},
  488. new VerifyCoefficient() { CheckerId = 3, DoPersonId =7, Coefficient =0.2},
  489. new VerifyCoefficient() { CheckerId = 3, DoPersonId =8, Coefficient =0.2},
  490. new VerifyCoefficient() { CheckerId = 3, DoPersonId =9, Coefficient =0.3},
  491. new VerifyCoefficient() { CheckerId = 3, DoPersonId =10, Coefficient =0.3},
  492. new VerifyCoefficient() { CheckerId = 3, DoPersonId =11, Coefficient =0.4},
  493. new VerifyCoefficient() { CheckerId = 3, DoPersonId =12, Coefficient =0.4},
  494. new VerifyCoefficient() { CheckerId = 3, DoPersonId =13, Coefficient =0.5},
  495. new VerifyCoefficient() { CheckerId = 4, DoPersonId =5, Coefficient =0.2},
  496. new VerifyCoefficient() { CheckerId = 4, DoPersonId =6, Coefficient =0.2},
  497. new VerifyCoefficient() { CheckerId = 4, DoPersonId =7, Coefficient =0.2},
  498. new VerifyCoefficient() { CheckerId = 4, DoPersonId =8, Coefficient =0.2},
  499. new VerifyCoefficient() { CheckerId = 4, DoPersonId =9, Coefficient =0.3},
  500. new VerifyCoefficient() { CheckerId = 4, DoPersonId =10, Coefficient =0.3},
  501. new VerifyCoefficient() { CheckerId = 4, DoPersonId =11, Coefficient =0.4},
  502. new VerifyCoefficient() { CheckerId = 4, DoPersonId =12, Coefficient =0.4},
  503. new VerifyCoefficient() { CheckerId = 4, DoPersonId =13, Coefficient =0.5},
  504. new VerifyCoefficient() { CheckerId = 5, DoPersonId =5, Coefficient =0.2},
  505. new VerifyCoefficient() { CheckerId = 5, DoPersonId =6, Coefficient =0.2},
  506. new VerifyCoefficient() { CheckerId = 5, DoPersonId =7, Coefficient =0.2},
  507. new VerifyCoefficient() { CheckerId = 5, DoPersonId =8, Coefficient =0.2},
  508. new VerifyCoefficient() { CheckerId = 5, DoPersonId =9, Coefficient =0.3},
  509. new VerifyCoefficient() { CheckerId = 5, DoPersonId =10, Coefficient =0.3},
  510. new VerifyCoefficient() { CheckerId = 5, DoPersonId =11, Coefficient =0.4},
  511. new VerifyCoefficient() { CheckerId = 5, DoPersonId =12, Coefficient =0.4},
  512. new VerifyCoefficient() { CheckerId = 5, DoPersonId =13, Coefficient =0.5},
  513. new VerifyCoefficient() { CheckerId = 6, DoPersonId =5, Coefficient =0.2},
  514. new VerifyCoefficient() { CheckerId = 6, DoPersonId =6, Coefficient =0.2},
  515. new VerifyCoefficient() { CheckerId = 6, DoPersonId =7, Coefficient =0.2},
  516. new VerifyCoefficient() { CheckerId = 6, DoPersonId =8, Coefficient =0.2},
  517. new VerifyCoefficient() { CheckerId = 6, DoPersonId =9, Coefficient =0.3},
  518. new VerifyCoefficient() { CheckerId = 6, DoPersonId =10, Coefficient =0.3},
  519. new VerifyCoefficient() { CheckerId = 6, DoPersonId =11, Coefficient =0.4},
  520. new VerifyCoefficient() { CheckerId = 6, DoPersonId =12, Coefficient =0.4},
  521. new VerifyCoefficient() { CheckerId = 6, DoPersonId =13, Coefficient =0.5}
  522. }
  523. );
  524. #region 案件文档对比
  525. modelBuilder.Entity<CaseInfo>(entity =>
  526. {
  527. entity.ToTable("CaseInfo");
  528. //entity.HasKey( x => x.Id );
  529. //entity.Property(e => e.CaseNo).HasMaxLength(50);
  530. //entity.Property(e => e.CaseName).HasMaxLength(500);
  531. //entity.Property(e => e.DraftDate).HasColumnType("date");
  532. //entity.Property(e => e.ReturnDate).HasColumnType("date");
  533. //entity.Property(e => e.FinalVersionDate).HasColumnType("date");
  534. entity.HasOne(d => d.Customer)
  535. .WithMany()
  536. .HasForeignKey(d => d.CustomerId);
  537. entity.HasOne(d => d.Reviewer)
  538. .WithMany()
  539. .HasForeignKey(d => d.ReviewerId);
  540. entity.HasOne(d => d.DRRAbstract)
  541. .WithMany()
  542. .HasForeignKey(d => d.DRRAbstractId);
  543. entity.HasOne(d => d.DRRCalim)
  544. .WithMany()
  545. .HasForeignKey(d => d.DRRCalimId);
  546. entity.HasOne(d => d.DRRFulltext)
  547. .WithMany()
  548. .HasForeignKey(d => d.DRRFulltextId);
  549. entity.HasOne(d => d.DRRAll)
  550. .WithMany()
  551. .HasForeignKey(d => d.DRRAllId);
  552. entity.HasOne(d => d.RFRAbstract)
  553. .WithMany()
  554. .HasForeignKey(d => d.RFRAbstractId);
  555. entity.HasOne(d => d.RFRCalim)
  556. .WithMany()
  557. .HasForeignKey(d => d.RFRCalimId);
  558. entity.HasOne(d => d.RFRFulltext)
  559. .WithMany()
  560. .HasForeignKey(d => d.RFRFulltextId);
  561. entity.HasOne(d => d.RFRAll)
  562. .WithMany()
  563. .HasForeignKey(d => d.RFRAllId);
  564. });
  565. modelBuilder.Entity<CompareResult>(entity =>
  566. {
  567. entity.ToTable("CompareResult");
  568. });
  569. #endregion
  570. #region 初始化绩效点数规则
  571. //List<BasePointRule> rules = new List<BasePointRule>();
  572. //DataTable dt = wispro.sp.utility.NPOIExcel.ExcelToDataTable("c:\\temp\\20211130-点数规则-lcy-v1.xlsx", true);
  573. //foreach (DataRow row in dt.Rows)
  574. //{
  575. // BasePointRule rule = new BasePointRule()
  576. // {
  577. // Rule = row["规则"].ToString(),
  578. // PointExpress = row["点数计算"].ToString(),
  579. // Priority = int.Parse(row["优先级修订"].ToString()),
  580. // Type = row["类型"].ToString()
  581. // };
  582. // rules.Add(rule);
  583. //}
  584. //for (int i = 0; i < rules.Count; i++)
  585. //{
  586. // rules[i].Id = i + 1;
  587. //}
  588. //modelBuilder.Entity<BasePointRule>().HasData(rules);
  589. #endregion
  590. AppealType[] appealTypes = new AppealType[]
  591. {
  592. new AppealType(){Id=1, Name ="绩效点数分配比率",CanDoExpress = "p.ItemStaffs.Count()>1",NeedReview=true},
  593. new AppealType(){Id=2,Name ="案件系数复核",CanDoExpress = "p.DoItem==\"新申请\"",ReviewerExpress ="p.Reviewer",NeedReview =true },
  594. new AppealType(){Id=3,Name ="处理事项系数复核",CanDoExpress = "p.DoItem==\"新申请\"",ReviewerExpress ="p.Reviewer", NeedReview = true},
  595. new AppealType(){Id=4,Name ="案件缺漏申诉",CanDoExpress ="",ReviewerExpress ="p.Reviewer",Type =1, NeedReview = true},
  596. new AppealType(){Id=5,Name ="案件严重超期说明",CanDoExpress ="p.isDanger()", NeedReview = true},
  597. new AppealType(){Id=6,Name ="按照翻译字数算绩效备注",CanDoExpress ="p.DoItem==\"新申请\" || p.DoItem==\"翻译\"", NeedReview = true}
  598. };
  599. InputField[] inputFields = new InputField[] {
  600. new InputField(){Id=1,AppealTypeId =1,AppealState =0,FieldName ="分配比率",
  601. MapObjectField ="ItemStaffs.PerformancePoint",
  602. FieldType = typeof(double).ToString(),
  603. MapObjectFieldLabel="ItemStaffs.DoPerson.Name"
  604. },
  605. new InputField(){Id=3,AppealTypeId =1,AppealState =0,FieldName ="原因",FieldType =typeof(string).ToString() },
  606. new InputField(){Id=4,AppealTypeId =1,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
  607. new InputField(){Id=5,AppealTypeId =1,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
  608. new InputField(){Id=6,AppealTypeId =2,AppealState =0,FieldName ="案件系数", MapObjectField ="CaseCoefficient",FieldType = typeof(string).ToString() },
  609. new InputField(){Id=9,AppealTypeId =2,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
  610. new InputField(){Id=10,AppealTypeId =2,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
  611. new InputField(){Id=11,AppealTypeId =3,AppealState =0,FieldName ="处理事项系数", MapObjectField ="DoItemCoefficient",FieldType = typeof(string).ToString() },
  612. new InputField(){Id=12,AppealTypeId =3,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
  613. new InputField(){Id=13,AppealTypeId =3,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
  614. new InputField(){Id=14,AppealTypeId =4,AppealState =0,FieldName ="我方文号", FieldType = typeof(string).ToString() },
  615. new InputField(){Id=15,AppealTypeId =4,AppealState =0,FieldName ="处理事项", FieldType = typeof(string).ToString() },
  616. new InputField(){Id=16,AppealTypeId =4,AppealState =1,FieldName ="备注",FieldType =typeof(string).ToString() },
  617. new InputField(){Id=17,AppealTypeId =4,AppealState =1,FieldName ="审核意见",FieldType =typeof(string).ToString()},
  618. new InputField(){Id=18,AppealTypeId =5,AppealState =0,FieldName ="超期说明",MapObjectField ="OverDueMemo", FieldType = typeof(string).ToString() },
  619. new InputField(){Id=21,AppealTypeId =5,AppealState =1,FieldName ="审核意见", FieldType = typeof(string).ToString() },
  620. new InputField(){Id=22,AppealTypeId =5,AppealState =1,FieldName ="备注", FieldType = typeof(string).ToString() },
  621. new InputField(){Id=19,AppealTypeId =6,AppealState =0,FieldName ="翻译类型", MapObjectField ="AgentFeedbackMemo", FieldType = typeof(string).ToString() },
  622. new InputField(){Id=20,AppealTypeId =6,AppealState =0,FieldName ="翻译字数", MapObjectField ="WordCount", FieldType = typeof(int).ToString() },
  623. new InputField(){Id=23,AppealTypeId =6,AppealState =1,FieldName ="审核意见", FieldType = typeof(string).ToString() },
  624. new InputField(){Id=24,AppealTypeId =6,AppealState =1,FieldName ="翻译字数", MapObjectField ="WordCount", FieldType = typeof(int).ToString() },
  625. };
  626. List<SelectValue> selectValues = new List<SelectValue>() {
  627. new SelectValue(){Id =1, InputFieldId =5, Value ="同意" },
  628. new SelectValue(){Id =2, InputFieldId =5, Value ="拒绝" },
  629. new SelectValue(){Id =3, InputFieldId =10, Value ="同意" },
  630. new SelectValue(){Id =4, InputFieldId =10, Value ="拒绝" },
  631. new SelectValue(){Id =5, InputFieldId =13, Value ="同意" },
  632. new SelectValue(){Id =6, InputFieldId =13, Value ="拒绝" },
  633. new SelectValue(){Id =7, InputFieldId =17, Value ="同意" },
  634. new SelectValue(){Id =8, InputFieldId =17, Value ="拒绝" },
  635. new SelectValue(){Id =9, InputFieldId =6, Value ="S" },
  636. new SelectValue(){Id =10, InputFieldId =6, Value ="A" },
  637. new SelectValue(){Id =11, InputFieldId =6, Value ="B" },
  638. new SelectValue(){Id =12, InputFieldId =6, Value ="C" },
  639. new SelectValue(){Id =13, InputFieldId =6, Value ="D" },
  640. new SelectValue(){Id =14, InputFieldId =11, Value ="实质" },
  641. new SelectValue(){Id =15, InputFieldId =11, Value ="形式" },
  642. new SelectValue(){Id =16, InputFieldId =19, Value ="中-德" },
  643. new SelectValue(){Id =17, InputFieldId =19, Value ="中-英" },
  644. new SelectValue(){Id =18, InputFieldId =19, Value ="英-中" },
  645. new SelectValue(){Id =19, InputFieldId =21, Value ="同意" },
  646. new SelectValue(){Id =20, InputFieldId =21, Value ="拒绝" },
  647. new SelectValue(){Id =21, InputFieldId =23, Value ="同意" },
  648. new SelectValue(){Id =22, InputFieldId =23, Value ="拒绝" },
  649. };
  650. List<CaseCeoffcient> caseCeoffcients = new List<CaseCeoffcient>()
  651. {
  652. new CaseCeoffcient(){ Ceoffcient="S",Value =2.5},
  653. new CaseCeoffcient(){ Ceoffcient="A",Value =1.5},
  654. new CaseCeoffcient(){ Ceoffcient="B",Value =1.0},
  655. new CaseCeoffcient(){ Ceoffcient="C",Value =0.7},
  656. new CaseCeoffcient(){ Ceoffcient="D",Value =0.4}
  657. };
  658. modelBuilder.Entity<AppealType>().HasData(appealTypes);
  659. modelBuilder.Entity<InputField>().HasData(inputFields);
  660. modelBuilder.Entity<SelectValue>().HasData(selectValues);
  661. modelBuilder.Entity<CaseCeoffcient>().HasData(caseCeoffcients);
  662. #region 流程定义
  663. modelBuilder.Entity<Workflow>(entity => {
  664. entity.ToTable("Workflow");
  665. entity.HasOne(d => d.InitAction)
  666. .WithMany()
  667. .HasForeignKey(d => d.InitActionId)
  668. .OnDelete(DeleteBehavior.NoAction);
  669. entity.HasOne(d => d.CreateUser)
  670. .WithMany()
  671. .HasForeignKey(d=>d.CreateUserId);
  672. });
  673. modelBuilder.Entity<Step>(entity => {
  674. entity.ToTable("Step");
  675. entity.HasOne(d => d.workflow)
  676. .WithMany()
  677. .HasForeignKey(d => d.workflowId);
  678. });
  679. modelBuilder.Entity<TrasferCondition>(entity=> {
  680. entity.ToTable("TrasferCondition");
  681. entity.HasOne(d=>d.Step)
  682. .WithMany()
  683. .HasForeignKey(d=>d.StepId)
  684. .OnDelete(DeleteBehavior.NoAction);
  685. entity.HasOne(d => d.nextStep)
  686. .WithMany()
  687. .HasForeignKey(d => d.nextStepId)
  688. .OnDelete(DeleteBehavior.NoAction);
  689. });
  690. modelBuilder.Entity<entity.workflowDefine.Action>(entity => {
  691. entity.ToTable("Action");
  692. entity.HasOne(d => d.step)
  693. .WithMany()
  694. .HasForeignKey(d => d.StepId);
  695. });
  696. modelBuilder.Entity<InputValueSetting>(entity => {
  697. entity.ToTable("InputValueSetting");
  698. entity.HasOne(d => d.action)
  699. .WithMany(d=>d.inputValuesSettings)
  700. .HasForeignKey(d => d.actionId)
  701. .OnDelete(DeleteBehavior.NoAction);
  702. entity.HasOne(d => d.ParentSetting)
  703. .WithMany()
  704. .HasForeignKey(d => d.ParentSettingId);
  705. });
  706. modelBuilder.Entity<WorkflowInstance>(entity=> {
  707. entity.ToTable("WorkflowInstance");
  708. entity.HasOne(d=>d.workflow)
  709. .WithMany()
  710. .HasForeignKey(d=>d.workflowId);
  711. });
  712. modelBuilder.Entity<StepInstance>(entity => {
  713. entity.ToTable("StepInstance");
  714. entity.HasOne(d => d.Step)
  715. .WithMany()
  716. .HasForeignKey(d => d.stepId);
  717. entity.HasOne(d => d.workflowInstance)
  718. .WithMany()
  719. .HasForeignKey(d => d.workflowInstanceId)
  720. .OnDelete(DeleteBehavior.NoAction);
  721. });
  722. modelBuilder.Entity<InputValue>(entity => {
  723. entity.ToTable("InputValue");
  724. entity.HasOne(d => d.workflowInstance)
  725. .WithMany()
  726. .HasForeignKey(d => d.workflowInstanceId);
  727. entity.HasOne(d => d.valueSetting)
  728. .WithMany()
  729. .HasForeignKey(d => d.valueSettingId);
  730. });
  731. #endregion
  732. OnModelCreatingPartial(modelBuilder);
  733. }
  734. partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
  735. }
  736. }