spDbContext.cs 40 KB

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