update 建档审核/退回,退回保存/提交审核功能

This commit is contained in:
2021-06-10 18:23:48 +08:00
parent fe1f2fb821
commit c1a0c836fb
15 changed files with 694 additions and 50 deletions

View File

@@ -271,12 +271,21 @@ namespace Ewide.Application
public string CompetentDepartment { get; set; }
#endregion
public DataStatus StateDataStatus { get; set; }
public int State
{
get
{
return (int)StateDataStatus;
}
}
}
public class HouseInfoInputAdd
public class HouseInfoInputSave
{
public HouseCodeOutput houseCode { get; set; }
public HouseInfoInput houseInfo { get; set; }
public EditHouseTaskInput PatrolInfo { get; set; }
public HouseTaskCheckRecordInput TaskCheckRecord { get; set; }
}
}

View File

@@ -44,34 +44,21 @@ namespace Ewide.Application.Service.HouseSafety.HouseInfo
[HttpPost("/houseInfo/save")]
[UnitOfWork]
[AllowAnonymous]
public async Task Save([FromBody] HouseInfoInputAdd input)
public async Task Save([FromBody] HouseInfoInputSave input)
{
var houseCode = input.houseCode.Adapt<BsHouseCode>();
await houseCode.UpdateIncludeAsync(new[] { nameof(BsHouseCode.Address), nameof(BsHouseCode.Lng), nameof(BsHouseCode.Lat) }, true);
//根据任务审核记录判断是否是审核操作,从而确定 DataStatus
//审核操作,则为 input.TaskCheckRecord.PassOrBackDataStatus
//非审核操作,则为 DataStatus.Saved
var isCheckAction = input.TaskCheckRecord != null;
await InputDataProcess(input, isCheckAction ? input.TaskCheckRecord.PassOrBackDataStatus : DataStatus.Saved);
}
var houseEntity = await _houseInfoRep.DetachedEntities.FirstOrDefaultAsync(h => h.HouseCodeId == input.houseCode.Id);
var houseInfo = input.houseInfo.Adapt<BsHouseInfo>();
houseInfo.HouseCodeId = input.houseCode.Id;
if(houseEntity == null)
{
houseInfo.Id = Guid.NewGuid().ToString();
houseInfo.State = 3;
await houseInfo.InsertAsync();
}
else
{
houseInfo.Id = houseEntity.Id;
houseInfo.State = houseEntity.State;
await houseInfo.UpdateExcludeAsync(new[] { nameof(BsHouseInfo.HouseGrade) }, true) ;
}
if(houseInfo.State != 6)
{
var houseTask = input.PatrolInfo.Adapt<BsHouseTask>();
houseTask.HouseCodeId = input.houseCode.Id;
houseTask.Status = 1;
await houseTask.UpdateExcludeAsync(new string[] { nameof(BsHouseTask.TaskType) }, ignoreNullValues: true);
}
[HttpPost("/houseInfo/submitToCheck")]
[UnitOfWork]
[AllowAnonymous]
public async Task SubmitToCheck([FromBody] HouseInfoInputSave input)
{
await InputDataProcess(input,DataStatus.Submited);
}
[HttpGet("/houseInfo/getByTaskId")]
@@ -121,5 +108,64 @@ WHERE HC.Id=@HouseCodeId", new { houseTask.HouseCodeId }
return houseInfoOutputForDetailPage;
}
[NonAction]
public async Task InputDataProcess(HouseInfoInputSave input,DataStatus dataStatus = DataStatus.Init)
{
//房屋编码地址/坐标单独更新
var houseCode = input.houseCode.Adapt<BsHouseCode>();
await houseCode.UpdateIncludeAsync(new[] { nameof(BsHouseCode.Address), nameof(BsHouseCode.Lng), nameof(BsHouseCode.Lat) }, true);
//获取房屋详情实体,判断是新增还是更新
var houseEntity = await _houseInfoRep.DetachedEntities.FirstOrDefaultAsync(h => h.HouseCodeId == input.houseCode.Id);
//建档审核通过的房屋数据修改时对应的建档任务Task不处理
if (houseEntity.State != 6)
{
var houseTask = input.PatrolInfo.Adapt<BsHouseTask>();
houseTask.HouseCodeId = input.houseCode.Id;
//任务没有暂存状态其他状态与HouseInfo的State一致
houseTask.Status = dataStatus == DataStatus.TempSaved ? (int)DataStatus.Saved : (int)dataStatus;
await houseTask.UpdateExcludeAsync(new string[] { nameof(BsHouseTask.TaskType) }, ignoreNullValues: true);
}
//判断房屋建档状态
//dataStatus == DataStatus.Saved 若是保存操作 则判断是新增/更新
//判断是新增/更新 根据传入参数dataStatus确定
input.houseInfo.StateDataStatus = dataStatus == DataStatus.Saved ? (houseEntity == null ? DataStatus.Saved : GetDataStatus(houseEntity.State)) : dataStatus;
var houseInfo = input.houseInfo.Adapt<BsHouseInfo>();
houseInfo.HouseCodeId = input.houseCode.Id;
if (houseEntity == null)
{
houseInfo.Id = Guid.NewGuid().ToString();
await houseInfo.InsertAsync();
}
else
{
houseInfo.Id = houseEntity.Id;
await houseInfo.UpdateExcludeAsync(new[] { nameof(BsHouseInfo.HouseGrade) }, true);
}
//审核操作则新增一条审核记录
if (dataStatus == DataStatus.Back || dataStatus == DataStatus.Passed)
{
var checkRecord = input.TaskCheckRecord.Adapt<BsHouseTaskCheckRecord>();
await checkRecord.InsertAsync();
}
}
private DataStatus GetDataStatus(int status)
{
return status switch
{
-1 => DataStatus.Back,
1 => DataStatus.TempSaved,
2 => DataStatus.Saved,
3 => DataStatus.Submited,
6 => DataStatus.Passed,
_ => DataStatus.Init,
};
}
}
}

View File

@@ -113,6 +113,12 @@ namespace Ewide.Application
public string Id { get; set; }
}
public class SubmitHouseTaskInput
{
[Required(ErrorMessage = "任务Id不能为空")]
public string TaskId { get; set; }
}
public class QueryHouseTaskInput : PageInputBase
{

View File

@@ -47,21 +47,35 @@ LEFT JOIN bs_house_projectinfo Proj ON Proj.Id=HC.ProjectId
LEFT JOIN sys_area_code CA ON CA.Code = Proj.AreaCode
LEFT JOIN sys_area_code RA ON RA.AdCode = SUBSTR(CA.AdCode,1,9)
LEFT JOIN sys_area_code AA ON AA.AdCode = SUBSTR(CA.AdCode,1,6)
WHERE T.UserID=@UserID";
WHERE {0}";
var user = await _userManager.CheckUserAsync();
if (user == null) throw Oops.Oh("登录信息丢失");
var userRoles = await _userManager.GetUserRoleList();
var userOrg = await _userManager.GetUserOrgInfo();
var param = new DynamicParameters();
param.Add("UserID", user.Id);
if (userRoles.Where(r => r.Code == Enum.GetName(HouseManagerRole.HouseSecurityManager).ToUnderScoreCase()).Count() > 0)
{
sql = String.Format(sql, " (T.Status !=3) AND T.UserID=@UserID ");
param.Add("UserID", user.Id);
}
if (userRoles.Where(r => r.Code == Enum.GetName(HouseManagerRole.ZoneManager).ToUnderScoreCase()).Count() > 0)
{
sql = String.Format(sql, " (T.Status=3 OR T.Status=6) AND HC.ZoneId = @ZoneId ");
param.Add("ZoneId", userOrg.Id);
}
return await _dapperRepository.QueryPageDataDynamic(sql, input, param, filterFields: new string[] { "Type", "Address", "HouseCode" });
}
[HttpPost("/houseTask/submit")]
[UnitOfWork]
[AllowAnonymous]
public async Task Submit([Required] string taskId)
public async Task Submit([FromBody] SubmitHouseTaskInput input)
{
//获取任务实体
var houseTask = await _houseTaskRep.DetachedEntities.FirstOrDefaultAsync(t => t.Id == taskId);
var houseTask = await _houseTaskRep.DetachedEntities.FirstOrDefaultAsync(t => t.Id == input.TaskId);
if (houseTask == null) throw Oops.Oh("任务不存在");
houseTask.Status = 2;
houseTask.LastSubmitTime = DateTime.Now;

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ewide.Application
{
public class HouseTaskCheckRecordInput
{
/// <summary>
/// 任务Id
/// </summary>
[Required(ErrorMessage = "任务参数有误")]
public string TaskId { get; set; }
/// <summary>
/// 通过3退回-1
/// </summary>
[Required(ErrorMessage = "审核结果不能为空")]
public int PassOrBack { get; set; }
public DataStatus PassOrBackDataStatus
{
get
{
return PassOrBack switch
{
-1 => DataStatus.Back,
1 => DataStatus.TempSaved,
2 => DataStatus.Saved,
3 => DataStatus.Submited,
6 => DataStatus.Passed,
_ => DataStatus.Init,
};
}
}
/// <summary>
/// 审核内容
/// </summary>
[Required(ErrorMessage = "审核内容不能为空")]
public string Content { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ewide.Application.Service.HouseSafety.HouseTaskCheckRecord.Dto
{
public class HouseTaskCheckRecordOutput
{
}
}