788 lines
37 KiB
C#
788 lines
37 KiB
C#
using APT.BaseData.Domain.Entities.FM;
|
||
using APT.BaseData.Domain.Entities;
|
||
using APT.BaseData.Domain.Enums.PF;
|
||
using APT.BaseData.Domain.Enums;
|
||
using APT.BaseData.Domain.IServices;
|
||
using APT.BaseData.Domain.IServices.FM;
|
||
using APT.Infrastructure.Core;
|
||
using APT.MS.Domain.Entities.SC.PE;
|
||
using APT.MS.Domain.Entities.SC.SC;
|
||
using APT.Utility;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using APT.MS.Domain.Enums;
|
||
using APT.MS.Domain.Entities.SC.PT;
|
||
using System;
|
||
using APT.MS.Domain.Entities.HM;
|
||
using APT.BaseData.Services.Services.FM;
|
||
using System.Numerics;
|
||
using AutoMapper;
|
||
using Google.Protobuf.WellKnownTypes;
|
||
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
||
using System.Threading;
|
||
using Enum = System.Enum;
|
||
using APT.BaseData.Domain.ApiModel;
|
||
using System.IO;
|
||
using System.Data;
|
||
using APT.MS.Domain.Entities.LR;
|
||
using APT.MS.Domain.Entities.SC;
|
||
using APT.BaseData.Domain.ApiModel.FM;
|
||
|
||
namespace APT.SC.WebApi.Controllers.Api.SCController
|
||
{
|
||
/// <summary>
|
||
/// 标准化创建
|
||
/// </summary>
|
||
[Route("api/SC/SCStandardCreate")]
|
||
public partial class StandardCreateController : AuthorizeApiController<T_SC_STANDARD_CREATE>
|
||
{
|
||
IPFCodeRuleService CodeRuleService { get; set; }
|
||
IFMNotificationTaskService NotificationTaskService { get; set; }
|
||
IFMFlowPermitService MFlowPermitService { get; set; }
|
||
IPFApproveCallBackService ApproveCallBackService { get; set; }
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="notificationTaskService"></param>
|
||
public StandardCreateController(IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService)
|
||
{
|
||
CodeRuleService = codeRuleService;
|
||
NotificationTaskService = notificationTaskService;
|
||
MFlowPermitService = mFlowPermitService;
|
||
ApproveCallBackService = approveCallBackService;
|
||
}
|
||
/// <summary>
|
||
/// 导入
|
||
/// </summary>
|
||
/// <param name="entity"></param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("FullImport")]
|
||
public JsonActionResult<bool> FullImport([FromBody] T_SC_STANDARD_CREATE entity)
|
||
{
|
||
return SafeExecute(() =>
|
||
{
|
||
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
|
||
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
|
||
var departmentId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
|
||
List<T_SC_STANDARD_CREATE> stas = new List<T_SC_STANDARD_CREATE>();
|
||
List<T_SC_STANDARD_CREATE_FILE> files = new List<T_SC_STANDARD_CREATE_FILE>();
|
||
//List<T_SC_STANDARD_CREATE_POST> posts = new List<T_SC_STANDARD_CREATE_POST>();
|
||
var detail = entity.Nav_Details;
|
||
if (detail != null && detail.Any())
|
||
{
|
||
KeywordFilter filter = new KeywordFilter();
|
||
filter.OrgId = orgId;
|
||
filter.Keyword = detail.FirstOrDefault()?.TYPE.GetInt().ToString();
|
||
var code = GetFileCode(filter).Data;
|
||
int i = 1;
|
||
foreach (var item in detail)
|
||
{
|
||
// 取最后五位序列号
|
||
var serial = code.Substring(code.Length - 5);
|
||
//序列号+1,不足五位补0
|
||
var num = (int.Parse(serial) + i).ToString().PadLeft(5, '0');
|
||
var temp = code.Substring(0, code.Length - 5);
|
||
var entityCode = temp + num;
|
||
T_SC_STANDARD_CREATE sta = new T_SC_STANDARD_CREATE();
|
||
sta.STATUS = SCSystemEditStatus.已归档;
|
||
sta.USER_ID = loginUserId;
|
||
sta.DEPARTMENT_ID = item.DEPARTMENT_ID;
|
||
sta.VERSION = 1;
|
||
sta.FILE_STATUS = SCSystemFileStatus.有效;
|
||
sta.ORG_ID = orgId;
|
||
sta.CODE = entityCode;
|
||
sta.NAME = item.NAME;
|
||
sta.UNIT = item.UNIT;
|
||
sta.COMPILE_TIME = item.COMPILE_TIME;
|
||
sta.PUBLISH_TIME = item.PUBLISH_TIME;
|
||
sta.NOTE = item.NOTE;
|
||
sta.TYPE = item.TYPE;
|
||
sta.IMPORT_TYPE = DisableStatusEnum.是;
|
||
sta.POST_ID = item.POST_ID;
|
||
sta.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
|
||
sta.MineType = item.MineType;
|
||
if (!string.IsNullOrEmpty(item.FILE_CONTENT))
|
||
{
|
||
sta.FILE_CONTENT = item.FILE_CONTENT.Replace("\x20", " ").Replace("\x0A", "<br /> ");
|
||
}
|
||
if (item.Nav_Files != null && item.Nav_Files.Any())
|
||
{
|
||
item.Nav_Files.ForEach(t =>
|
||
{
|
||
T_SC_STANDARD_CREATE_FILE file = new T_SC_STANDARD_CREATE_FILE();
|
||
file.ORG_ID = orgId; file.STANDARD_CREATE_ID = sta.ID;
|
||
file.IMG_FILE_ID = t.IMG_FILE_ID;
|
||
files.Add(file);
|
||
});
|
||
}
|
||
i++;
|
||
//if (item.Nav_Posts != null && item.Nav_Posts.Any())
|
||
//{
|
||
// item.Nav_Posts.ForEach(t =>
|
||
// {
|
||
// T_SC_STANDARD_CREATE_POST post = new T_SC_STANDARD_CREATE_POST();
|
||
// post.ORG_ID = orgId; post.STANDARD_CREATE_ID = sta.ID;
|
||
// post.POST_ID = t.POST_ID;
|
||
// posts.Add(post);
|
||
// });
|
||
//}
|
||
stas.Add(sta);
|
||
}
|
||
}
|
||
entity = null;
|
||
UnifiedCommit(() =>
|
||
{
|
||
if (stas != null && stas.Any())
|
||
this.BantchSaveEntityNoCommit(stas);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
//if (posts != null && posts.Any())
|
||
// this.BantchSaveEntityNoCommit(posts);
|
||
});
|
||
return true;
|
||
});
|
||
}
|
||
/// <summary>
|
||
/// 新增/编辑
|
||
/// </summary>
|
||
/// <param name="entity"></param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("FullUpdate")]
|
||
public JsonActionResult<bool> FullUpdate([FromBody] T_SC_STANDARD_CREATE entity)
|
||
{
|
||
return SafeExecute(() =>
|
||
{
|
||
T_FM_NOTIFICATION_TASK task = null;
|
||
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
|
||
KeywordFilter filter = new KeywordFilter();
|
||
filter.OrgId = orgId;
|
||
filter.Keyword = entity.TYPE.GetInt().ToString();
|
||
var files = entity.Nav_Files;
|
||
entity.STATUS = SCSystemEditStatus.草稿;
|
||
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
|
||
entity.USER_ID = loginUserId;
|
||
entity.DEPARTMENT_ID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
|
||
entity.VERSION = entity.VERSION == null ? 1 : entity.VERSION;
|
||
entity.FILE_STATUS = SCSystemFileStatus.失效;
|
||
//entity.IMPORT_TYPE = DisableStatusEnum.否;
|
||
if (string.IsNullOrEmpty(entity.CODE))
|
||
{
|
||
var code = GetFileCode(filter).Data;
|
||
if (string.IsNullOrEmpty(code))
|
||
throw new Exception("制度编号不能为空,请关闭当前页面重新新增");
|
||
else
|
||
{
|
||
if (code.Length <= 5)
|
||
throw new Exception("制度编号错误,请关闭当前页面重新新增");
|
||
else
|
||
entity.CODE = code;
|
||
}
|
||
}
|
||
if (files != null && files.Any())
|
||
{
|
||
files.ForEach(t =>
|
||
{
|
||
t.ORG_ID = entity.ORG_ID; t.STANDARD_CREATE_ID = entity.ID;
|
||
});
|
||
}
|
||
if (!string.IsNullOrEmpty(entity.FILE_CONTENT))
|
||
{
|
||
entity.FILE_CONTENT = entity.FILE_CONTENT.Replace("\x20", " ").Replace("\x0A", "<br /> ");
|
||
}
|
||
var userInfo = this.GetEntity<T_FM_USER>(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.ID == loginUserId, "Nav_Department");
|
||
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
|
||
{
|
||
if (userInfo != null && userInfo.Nav_Department != null)
|
||
{
|
||
if (entity.IMPORT_TYPE == DisableStatusEnum.否)
|
||
{
|
||
entity.STATUS = SCSystemEditStatus.审核中;
|
||
entity.Nav_Files = null;
|
||
//取审批流水码
|
||
var sysFilter = new SystemCodeFilter();
|
||
sysFilter.CodeType = (int)PFCodeRuleType.审批流编码;
|
||
sysFilter.Count = 1;
|
||
sysFilter.OrgId = entity.ORG_ID;
|
||
var codes = CodeRuleService.NewGenSerial(sysFilter);
|
||
var serialCode = codes.Split(new char[] { ',' });
|
||
var param = Enum.GetName(typeof(SCDepartmentType), entity.DEPARTMENT_TYPE);
|
||
MFlowPermitService.InsertApprove(serialCode[0], "SC046", param, entity.ID, "SC046_SHOWPRINT", entity.TaskID, true, () =>
|
||
{
|
||
if (entity != null)
|
||
this.UpdateEntityNoCommit(entity);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
}, null, null, null, null, null, "SC046_SHOWPRINT", null, entity.NAME + "创建");
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
entity.STATUS = SCSystemEditStatus.已归档;
|
||
entity.FILE_STATUS = SCSystemFileStatus.有效;
|
||
}
|
||
}
|
||
if (entity.TaskID != Guid.Empty)
|
||
{
|
||
task = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
|
||
task.SOURCE_FORMCODE = "SC046_SHOWPRINT";
|
||
}
|
||
}
|
||
entity.Nav_Files = null;
|
||
UnifiedCommit(() =>
|
||
{
|
||
if (entity != null)
|
||
this.UpdateEntityNoCommit(entity);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
if (task != null)
|
||
this.UpdateEntityNoCommit(task);
|
||
});
|
||
return true;
|
||
});
|
||
}
|
||
/// <summary>
|
||
/// 获取
|
||
/// </summary>
|
||
/// <param name="filter"></param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("GetEdit")]
|
||
public JsonActionResult<T_SC_STANDARD_CREATE> GetEdit([FromBody] KeywordFilter filter)
|
||
{
|
||
return SafeExecute(() => {
|
||
var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString();
|
||
if (string.IsNullOrEmpty(id))
|
||
this.ThrowError("030017");
|
||
var result = this.GetEntity<T_SC_STANDARD_CREATE>(id, new string[] { "Nav_User", "Nav_User.Nav_Department",
|
||
"Nav_Files","Nav_Files.Nav_ImgFile","Nav_Files.Nav_ImgFile.Nav_File","Nav_Post"
|
||
});
|
||
if (result != null && !string.IsNullOrEmpty(result.FILE_CONTENT))
|
||
{
|
||
result.FILE_CONTENT = result.FILE_CONTENT.Replace(" ", "\x20").Replace("<br />", "\n");
|
||
}
|
||
return result;
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修订/废除
|
||
/// </summary>
|
||
/// <param name="entity"></param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("FullRevisionUpdate")]
|
||
public JsonActionResult<bool> FullRevisionUpdate([FromBody] T_SC_STANDARD_CREATE entity)
|
||
{
|
||
return SafeExecute(() =>
|
||
{
|
||
//var oldEntity = this.GetEntity<T_SC_STANDARD_CREATE>(entity.ID.ToString());
|
||
//if (oldEntity != null)
|
||
//{
|
||
// if (oldEntity.STATUS != SCSystemEditStatus.已归档)
|
||
// this.ThrowError("040003");
|
||
//}
|
||
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndScrap"))
|
||
{
|
||
if (entity.STATUS != SCSystemEditStatus.已归档)
|
||
this.ThrowError("040009");
|
||
}
|
||
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
|
||
{
|
||
if (entity.STATUS != SCSystemEditStatus.已归档)
|
||
this.ThrowError("040008");
|
||
}
|
||
var files = entity.Nav_Files;
|
||
entity.ID = Guid.NewGuid();
|
||
entity.STATUS = SCSystemEditStatus.草稿;
|
||
var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
|
||
entity.USER_ID = loginUserId;
|
||
entity.VERSION = entity.VERSION +1;
|
||
entity.IMPORT_TYPE = DisableStatusEnum.否;
|
||
if (files != null && files.Any())
|
||
{
|
||
files.ForEach(t =>
|
||
{
|
||
t.ORG_ID = entity.ORG_ID; t.STANDARD_CREATE_ID = entity.ID;
|
||
});
|
||
}
|
||
T_SC_STANDARD_CREATE oldEntity = null;
|
||
//废除
|
||
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndScrap"))
|
||
{
|
||
//entity.STATUS = SCSystemEditStatus.已废除;
|
||
//entity.FILE_STATUS = SCSystemFileStatus.失效;
|
||
//oldEntity = this.GetEntity<T_SC_STANDARD_CREATE>(t => t.ID != entity.ID && t.CODE == entity.CODE && t.FILE_STATUS == SCSystemFileStatus.有效);
|
||
//if (oldEntity != null)
|
||
// oldEntity.FILE_STATUS = SCSystemFileStatus.失效;
|
||
entity.FILE_STATUS = SCSystemFileStatus.废除中;
|
||
entity.STATUS = SCSystemEditStatus.审核中;
|
||
entity.Nav_Files = null;
|
||
//取审批流水码
|
||
var sysFilter = new SystemCodeFilter();
|
||
sysFilter.CodeType = (int)PFCodeRuleType.审批流编码;
|
||
sysFilter.Count = 1;
|
||
sysFilter.OrgId = entity.ORG_ID;
|
||
var codes = CodeRuleService.NewGenSerial(sysFilter);
|
||
var serialCode = codes.Split(new char[] { ',' });
|
||
var param = Enum.GetName(typeof(SCDepartmentType), entity.DEPARTMENT_TYPE);
|
||
MFlowPermitService.InsertApprove(serialCode[0], "SC052", param, entity.ID, "SC052_SHOWPRINT", entity.TaskID, true, () =>
|
||
{
|
||
if (entity != null)
|
||
this.UpdateEntityNoCommit(entity);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
}, null, null, null, null, null, "SC052_SHOWPRINT", null, entity.NAME + "废除");
|
||
return true;
|
||
}
|
||
//修订
|
||
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
|
||
{
|
||
//var formCode = "SC052";
|
||
//switch (entity.TYPE)
|
||
//{
|
||
// case SCType.制度:
|
||
// formCode = "SC052";
|
||
// break;
|
||
// case SCType.安全生产责任制:
|
||
// formCode = "SC052";
|
||
// break;
|
||
// case SCType.岗位安全操作规程和指导书:
|
||
// break;
|
||
// case SCType.应急预案修订记录:
|
||
// break;
|
||
// default: formCode = "SC052";
|
||
// break;
|
||
//}
|
||
entity.FILE_STATUS = SCSystemFileStatus.修订中;
|
||
entity.STATUS = SCSystemEditStatus.审核中;
|
||
entity.Nav_Files = null;
|
||
if (!string.IsNullOrEmpty(entity.FILE_CONTENT))
|
||
{
|
||
entity.FILE_CONTENT = entity.FILE_CONTENT.Replace("\x20", " ").Replace("\x0A", "<br /> ");
|
||
}
|
||
//取审批流水码
|
||
var sysFilter = new SystemCodeFilter();
|
||
sysFilter.CodeType = (int)PFCodeRuleType.审批流编码;
|
||
sysFilter.Count = 1;
|
||
sysFilter.OrgId = entity.ORG_ID;
|
||
var codes = CodeRuleService.NewGenSerial(sysFilter);
|
||
var serialCode = codes.Split(new char[] { ',' });
|
||
var param = Enum.GetName(typeof(SCDepartmentType), entity.DEPARTMENT_TYPE);
|
||
MFlowPermitService.InsertApprove(serialCode[0], "SC052", param, entity.ID, "SC052_SHOWPRINT", entity.TaskID, true, () =>
|
||
{
|
||
if (entity != null)
|
||
this.UpdateEntityNoCommit(entity);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
}, null, null, null, null, null, "SC052_SHOWPRINT", null, entity.NAME+ "修订");
|
||
return true;
|
||
}
|
||
entity.Nav_Files = null;
|
||
UnifiedCommit(() =>
|
||
{
|
||
if (entity != null)
|
||
this.UpdateEntityNoCommit(entity);
|
||
if (oldEntity != null)
|
||
this.UpdateEntityNoCommit(oldEntity);
|
||
if (files != null && files.Any())
|
||
this.BantchSaveEntityNoCommit(files);
|
||
});
|
||
return true;
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 回调函数
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
[HttpGet, Route("BackUpdate")]
|
||
public JsonActionResult<bool> BackUpdate(string id)
|
||
{
|
||
return SafeExecute(() =>
|
||
{
|
||
return ApproveCallBackService.CallBack("SC/SCStandardCreate/BackUpdate", id);
|
||
});
|
||
}
|
||
/// <summary>
|
||
/// 自动生成CODE
|
||
/// </summary>
|
||
/// <param name="filter"></param>
|
||
[HttpPost, Route("GetFileCode")]
|
||
public JsonActionResult<string> GetFileCode([FromBody] KeywordFilter filter)
|
||
{
|
||
return SafeExecute<string>(() =>
|
||
{
|
||
var fileCode = "";
|
||
var nextCodeInfo = this.GetEntities<T_SC_STANDARD_CREATE>(t => !t.IS_DELETED && (int)t.TYPE == int.Parse(filter.Keyword), new BaseFilter(filter.OrgId)).OrderByDescending(t => t.CREATE_TIME).FirstOrDefault();
|
||
var year = DateTime.Now.Year;
|
||
var month = DateTime.Now.Month.PadLeft(2, '0');
|
||
var day = DateTime.Now.Day.PadLeft(2, '0');
|
||
var prefix = "ZD";
|
||
if (filter.Keyword == "1")
|
||
prefix = "ZRZ";
|
||
if (filter.Keyword == "2")
|
||
prefix = "GWGC";
|
||
if (filter.Keyword == "3")
|
||
prefix = "YJYA";
|
||
if (nextCodeInfo == null)
|
||
{
|
||
fileCode = prefix + year + month + day + "00001";
|
||
}
|
||
else
|
||
{
|
||
if (nextCodeInfo.CODE.Length <= 5)
|
||
{
|
||
fileCode = prefix + year + month + day + "00001";
|
||
}
|
||
//取最后五位序列号
|
||
var serial = nextCodeInfo.CODE.Substring(nextCodeInfo.CODE.Length - 5);
|
||
//序列号+1,不足五位补0
|
||
var num = (int.Parse(serial) + 1).ToString().PadLeft(5, '0');
|
||
fileCode = prefix + year + month + day + num;
|
||
}
|
||
return fileCode;
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序分页查询数据
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("FullOrderPaged")]
|
||
public PagedActionResult<T_SC_STANDARD_CREATE> FullOrderPaged([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
var result = new PagedActionResult<T_SC_STANDARD_CREATE>();
|
||
var id = pageFilter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString();
|
||
if (string.IsNullOrEmpty(id))
|
||
this.ThrowError("030017");
|
||
var entity = this.GetEntity<T_SC_STANDARD_CREATE>(id);
|
||
FilterRule rule = new FilterRule();
|
||
rule.Field = "CODE";
|
||
rule.Value = entity.CODE;
|
||
FilterRule ruleOrg = new FilterRule();
|
||
ruleOrg.Field = "ORG_ID";
|
||
ruleOrg.Value = entity.ORG_ID;
|
||
FilterRule ruleType = new FilterRule();
|
||
ruleOrg.Field = "TYPE";
|
||
ruleOrg.Value = entity.TYPE;
|
||
pageFilter = new KeywordPageFilter();
|
||
pageFilter.FilterGroup.Rules.Add(rule);
|
||
pageFilter.FilterGroup.Rules.Add(ruleOrg);
|
||
pageFilter.Sort = "CREATE_TIME";
|
||
pageFilter.Order = 0;
|
||
pageFilter.Include.Add("Nav_User");
|
||
pageFilter.Include.Add("Nav_Department");
|
||
pageFilter.SelectField.Clear();
|
||
result = this.GetOrderPageEntities<T_SC_STANDARD_CREATE>(null, pageFilter);
|
||
if (result.Data != null && result.Data.Any())
|
||
{
|
||
result.Data.ForEach(t =>
|
||
{
|
||
if (string.IsNullOrEmpty(t.REASON))
|
||
t.REASON = "/";
|
||
if(string.IsNullOrEmpty(t.PROFILE))
|
||
t.PROFILE = "/";
|
||
t.VERSION_NAME = t.VERSION==null ? 0.ToString("#0.0") : t.VERSION.Value.ToString("#0.0");
|
||
});
|
||
}
|
||
return result;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序分页查询数据
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("OrderPagedNew")]
|
||
public PagedActionResult<T_SC_STANDARD_CREATE> OrderPagedNew([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
pageFilter.Include.Add("Nav_Department");
|
||
pageFilter.Include.Add("Nav_Files.Nav_ImgFile.Nav_File");
|
||
pageFilter.SelectField.Clear();
|
||
var result = this.GetOrderPageEntities<T_SC_STANDARD_CREATE>(null, pageFilter);
|
||
if (result.Data != null && result.Data.Any())
|
||
{
|
||
result.Data = result.Data.GroupBy(t => t.CODE).Select(y => y.OrderByDescending(x => x.CREATE_TIME).FirstOrDefault()).ToList();
|
||
result.Data.ForEach(t =>
|
||
{
|
||
if (!string.IsNullOrEmpty(t.FILE_CONTENT))
|
||
{
|
||
t.FILE_CONTENT = t.FILE_CONTENT.Replace(" ", "\x20").Replace("<br />", "\n");
|
||
}
|
||
});
|
||
//result.TotalCount = result.TotalCount;
|
||
}
|
||
return result;
|
||
}
|
||
/// <summary>
|
||
/// 获取导入数据
|
||
/// 参考 [Route("api/PF/Import")]
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("GetImportData")]
|
||
public JsonActionResult<ImportDataModel> GetImportData()
|
||
{
|
||
return SafeExecute<ImportDataModel>(() =>
|
||
{
|
||
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
|
||
var httpRequest = this.HttpContext.Request;
|
||
string orgIdStr = httpRequest.Form["OrgId"];// 获取 组织
|
||
ImportDataModel result = new ImportDataModel();
|
||
var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles");
|
||
if (!Directory.Exists(dic))
|
||
Directory.CreateDirectory(dic);
|
||
foreach (var key in httpRequest.Form.Files) // 文件键
|
||
{
|
||
var postedFile = key; // 获取文件键对应的文件对象
|
||
string filePath = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName);
|
||
Byte[] fileData = new Byte[postedFile.Length];
|
||
Stream sr = postedFile.OpenReadStream();//创建数据流对象
|
||
sr.Read(fileData, 0, (int)postedFile.Length);
|
||
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
|
||
{
|
||
fs.Write(fileData, 0, fileData.Length);
|
||
fs.Flush();
|
||
fs.Close();
|
||
}
|
||
|
||
//获取数据
|
||
Dictionary<int, int> startRowIndexs = new Dictionary<int, int>();
|
||
startRowIndexs.Add(0, 1);//根据Excel格式数据赋值
|
||
var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs);
|
||
string Msg = string.Empty;
|
||
|
||
bool isOK = InsertModel(dataTables.Tables[0], orgId, ref Msg);
|
||
|
||
try
|
||
{
|
||
System.IO.File.Delete(filePath);
|
||
}
|
||
catch { }
|
||
|
||
result.Data = Msg;
|
||
result.MessageList = new List<string> { Msg };
|
||
}
|
||
|
||
return result;
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 数据插入
|
||
/// </summary>
|
||
/// <param name="dtSource"></param>
|
||
/// <param name="OrgID"></param>
|
||
/// <param name="Msg"></param>
|
||
/// <param name="rowIndex"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
public bool InsertModel(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
|
||
{
|
||
var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
|
||
if (dtSource == null || dtSource.Rows.Count < rowIndex)
|
||
{
|
||
Msg = "未获取到导入数据";
|
||
throw new Exception(Msg);
|
||
}
|
||
int rowAll = dtSource.Rows.Count;
|
||
if (!string.IsNullOrEmpty(Msg))
|
||
{
|
||
throw new Exception(Msg);
|
||
}
|
||
var newFilter = new BaseFilter(orgId);
|
||
newFilter.SelectField = new List<string> { "NAME" };
|
||
var standLaws = this.GetEntities<T_SC_STANDARD_CREATE>(t => !t.IS_DELETED, newFilter);
|
||
List<T_SC_STANDARD_CREATE> laws = new List<T_SC_STANDARD_CREATE>();
|
||
var lawTypess = GetEntities<T_SC_POST>(t => t.IS_DELETED == false, new BaseFilter(orgId));
|
||
var departments = GetEntities<T_FM_DEPARTMENT>(t => t.IS_DELETED == false, new BaseFilter(orgId));
|
||
DateTime dtNow = DateTime.Now;
|
||
KeywordFilter filter = new KeywordFilter();
|
||
filter.OrgId = orgId;
|
||
filter.Keyword = "0";
|
||
if (dtSource.Rows[1][0].ToString().Trim() != "制度" && dtSource.Rows[1][0].ToString().Trim() != "安全生产责任制" && dtSource.Rows[1][0].ToString().Trim() != "岗位安全操作规程和指导书" && dtSource.Rows[1][0].ToString().Trim() != "应急预案")
|
||
{
|
||
|
||
throw new Exception("体系类型未按规定填写(制度,安全生产责任制,岗位安全操作规程和指导书,应急预案)");
|
||
}
|
||
else
|
||
{
|
||
switch (dtSource.Rows[1][0].ToString().Trim())
|
||
{
|
||
case "制度":
|
||
filter.Keyword = "0";
|
||
break;
|
||
case "安全生产责任制":
|
||
filter.Keyword = "1";
|
||
break;
|
||
case "岗位安全操作规程和指导书":
|
||
filter.Keyword = "2";
|
||
break;
|
||
case "应急预案":
|
||
filter.Keyword = "3";
|
||
break;
|
||
default:
|
||
filter.Keyword = "0";
|
||
break;
|
||
}
|
||
}
|
||
var code = GetFileCode(filter).Data;
|
||
int j = 1;
|
||
for (int i = 0; i < rowAll; i++)
|
||
{
|
||
T_SC_STANDARD_CREATE law = new T_SC_STANDARD_CREATE();
|
||
law.ID = Guid.NewGuid();
|
||
law.VERSION = 1;
|
||
law.USER_ID = (Guid)userId;
|
||
law.STATUS = SCSystemEditStatus.草稿;
|
||
law.FILE_STATUS = SCSystemFileStatus.有效;
|
||
law.IMPORT_TYPE = DisableStatusEnum.是;
|
||
// 取最后五位序列号
|
||
var serial = code.Substring(code.Length - 5);
|
||
//序列号+1,不足五位补0
|
||
var num = (int.Parse(serial) + i).ToString().PadLeft(5, '0');
|
||
var temp = code.Substring(0, code.Length - 5);
|
||
law.CODE = temp + num;
|
||
if (dtSource.Rows[i][0].ToString().Trim() == "制度")
|
||
{
|
||
law.TYPE = 0;
|
||
}
|
||
else if (dtSource.Rows[i][0].ToString().Trim() == "安全生产责任制")
|
||
{
|
||
law.TYPE = (SCType)1;
|
||
if (string.IsNullOrEmpty(dtSource.Rows[i][7].ToString().Trim()))
|
||
throw new Exception("责任制导入,必须填写责任制岗位");
|
||
else
|
||
{
|
||
var post = lawTypess.FirstOrDefault(t => t.NAME == dtSource.Rows[i][7].ToString().Trim());
|
||
if (post != null)
|
||
{
|
||
law.POST_ID = post.ID;
|
||
}
|
||
else
|
||
throw new Exception("责任制岗位:" + dtSource.Rows[i][7].ToString().Trim() + "未找到");
|
||
}
|
||
if (string.IsNullOrEmpty(dtSource.Rows[i][8].ToString().Trim()))
|
||
throw new Exception("责任制导入,必须填写责任制说明");
|
||
else
|
||
{
|
||
law.NOTE = dtSource.Rows[i][8].ToString().Trim();
|
||
}
|
||
if (string.IsNullOrEmpty(dtSource.Rows[i][9].ToString().Trim()))
|
||
throw new Exception("责任制导入,必须填写文件名称");
|
||
else
|
||
{
|
||
law.FILE_NAME = dtSource.Rows[i][9].ToString().Trim();
|
||
}
|
||
if (string.IsNullOrEmpty(dtSource.Rows[i][10].ToString().Trim()))
|
||
throw new Exception("责任制导入,必须填写文件内容");
|
||
else
|
||
{
|
||
law.FILE_CONTENT = dtSource.Rows[i][10].ToString().Trim().Replace("\x20", " ").Replace("\x0A", "<br /> ");
|
||
}
|
||
}
|
||
else if (dtSource.Rows[i][0].ToString().Trim() == "岗位安全操作规程和指导书")
|
||
{
|
||
law.TYPE = (SCType)2;
|
||
}
|
||
else if (dtSource.Rows[i][0].ToString().Trim() == "应急预案")
|
||
{
|
||
law.TYPE = (SCType)3;
|
||
}
|
||
else
|
||
{
|
||
throw new Exception("体系类型未按规定填写(制度,安全生产责任制,岗位安全操作规程和指导书,应急预案)");
|
||
}
|
||
if (dtSource.Rows[i][1].ToString().Trim() != "全公司" && dtSource.Rows[i][1].ToString().Trim() != "选矿厂" && dtSource.Rows[i][1].ToString().Trim() != "尾矿库" && dtSource.Rows[i][1].ToString().Trim() != "露天矿")
|
||
{
|
||
throw new Exception("生产单元未按规定填写(全公司,露天矿,选矿厂,尾矿库)");
|
||
}
|
||
else
|
||
{
|
||
switch (dtSource.Rows[i][1].ToString().Trim())
|
||
{
|
||
case "全公司":
|
||
law.MineType = 0;
|
||
break;
|
||
case "露天矿":
|
||
law.MineType = (FMProductionUnit)30;
|
||
break;
|
||
case "选矿厂":
|
||
law.MineType = (FMProductionUnit)10;
|
||
break;
|
||
case "尾矿库":
|
||
law.MineType = (FMProductionUnit)20;
|
||
break;
|
||
default:
|
||
law.MineType = 0;
|
||
break;
|
||
}
|
||
//law.MineType = (FMProductionUnit)int.Parse(dtSource.Rows[i][1].ToString().Trim());
|
||
}
|
||
if (!string.IsNullOrEmpty(dtSource.Rows[i][2].ToString().Trim()))
|
||
{
|
||
var standLaw = standLaws.FirstOrDefault(t => t.NAME == dtSource.Rows[i][2].ToString().Trim() && t.MineType == (FMProductionUnit)law.MineType);
|
||
if (standLaw == null)
|
||
law.NAME = dtSource.Rows[i][2].ToString().Trim();
|
||
else
|
||
throw new Exception("当前生产单元制度名称" + dtSource.Rows[i][2].ToString().Trim() + "已存在,不能重复导入");
|
||
}
|
||
else
|
||
throw new Exception("制度名称必须填写");
|
||
if (departments.FirstOrDefault(t => t.NAME == dtSource.Rows[i][3].ToString().Trim()) != null)
|
||
{
|
||
law.DEPARTMENT_ID = departments.FirstOrDefault(t => t.NAME == dtSource.Rows[i][3].ToString().Trim()).ID;
|
||
law.UNIT = dtSource.Rows[i][3].ToString().Trim();
|
||
}
|
||
else
|
||
throw new Exception("编制单位:" + dtSource.Rows[i][3].ToString().Trim() + "未找到");
|
||
if (dtSource.Rows[i][4].ToString().Trim() != "部门级" && dtSource.Rows[i][4].ToString().Trim() != "车间级" && dtSource.Rows[i][4].ToString().Trim() != "班组级" && dtSource.Rows[i][4].ToString().Trim() != "公司级")
|
||
{
|
||
|
||
throw new Exception("部门类型未按规定填写(公司级,部门级,车间级,班组级)");
|
||
}
|
||
else
|
||
{
|
||
switch (dtSource.Rows[i][4].ToString().Trim())
|
||
{
|
||
case "公司级":
|
||
law.DEPARTMENT_TYPE = (SCDepartmentType)3;
|
||
break;
|
||
case "部门级":
|
||
law.DEPARTMENT_TYPE = (SCDepartmentType)0;
|
||
break;
|
||
case "车间级":
|
||
law.DEPARTMENT_TYPE = (SCDepartmentType)1;
|
||
break;
|
||
case "班组级":
|
||
law.DEPARTMENT_TYPE = (SCDepartmentType)2;
|
||
break;
|
||
default:
|
||
law.DEPARTMENT_TYPE = (SCDepartmentType)3;
|
||
break;
|
||
}
|
||
//law.DEPARTMENT_TYPE = (SCDepartmentType)int.Parse(dtSource.Rows[i][4].ToString().Trim());
|
||
}
|
||
if (!string.IsNullOrEmpty(dtSource.Rows[i][5].ToString().Trim()))
|
||
{
|
||
law.COMPILE_TIME = DateTime.Parse(dtSource.Rows[i][5].ToString().Trim());
|
||
}
|
||
if (!string.IsNullOrEmpty(dtSource.Rows[i][6].ToString().Trim()))
|
||
{
|
||
law.PUBLISH_TIME = DateTime.Parse(dtSource.Rows[i][6].ToString().Trim());
|
||
}
|
||
law.ORG_ID = orgId;
|
||
laws.Add(law);
|
||
|
||
}
|
||
UnifiedCommit(() =>
|
||
{
|
||
if (laws != null && laws.Any())
|
||
BantchAddEntityNoCommit(laws);
|
||
});
|
||
Msg = "导入成功!";
|
||
return true;
|
||
}
|
||
}
|
||
}
|