spDbContext.cs 42 KB

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