spDbContext.cs 34 KB

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