업무일지 프로젝트 선택 시 이전 기록 기반 기본값 자동 설정 기능 추가
- MachineBridge에 Jobreport_GetLastByProject API 추가 (pidx 또는 projectName 기반 마지막 업무일지 조회) - WebSocket 서버에 JOBREPORT_GET_LAST_BY_PROJECT 핸들러 추가 - communication.ts에 getLastJobReportByProject 메서드 추가 - JobreportEditModal에서 프로젝트 선택 시 자동으로 이전 기록의 요청부서, 패키지, 업무형태, 공정, 상태 값을 기본값으로 설정 - 윈폼(fJobReport_Add.cs)의 동일한 로직을 웹앱에 구현
This commit is contained in:
@@ -432,6 +432,80 @@ namespace Project.Web
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 특정 프로젝트의 마지막 업무일지 조회 (프로젝트 선택 시 기본값 설정용)
|
||||
/// </summary>
|
||||
public string Jobreport_GetLastByProject(int pidx, string projectName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var currentUserId = info.Login.no;
|
||||
var sql = "";
|
||||
|
||||
if (pidx > 0)
|
||||
{
|
||||
// pidx로 조회
|
||||
sql = @"SELECT TOP 1 requestpart, package, type, jobgrp, process, status
|
||||
FROM JobReport WITH (nolock)
|
||||
WHERE gcode = @gcode AND uid = @uid AND ISNULL(pidx, -1) = @pidx
|
||||
ORDER BY pdate DESC, idx DESC";
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(projectName))
|
||||
{
|
||||
// projectName으로 조회
|
||||
sql = @"SELECT TOP 1 requestpart, package, type, jobgrp, process, status
|
||||
FROM JobReport WITH (nolock)
|
||||
WHERE gcode = @gcode AND uid = @uid AND ISNULL(projectName, '') LIKE @projectName
|
||||
ORDER BY pdate DESC, idx DESC";
|
||||
}
|
||||
else
|
||||
{
|
||||
return JsonConvert.SerializeObject(new { Success = false, Message = "프로젝트 정보가 없습니다." });
|
||||
}
|
||||
|
||||
var cs = Properties.Settings.Default.gwcs;
|
||||
using (var cn = new SqlConnection(cs))
|
||||
using (var cmd = new SqlCommand(sql, cn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@gcode", info.Login.gcode);
|
||||
cmd.Parameters.AddWithValue("@uid", currentUserId);
|
||||
if (pidx > 0)
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@pidx", pidx);
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@projectName", projectName);
|
||||
}
|
||||
|
||||
using (var da = new SqlDataAdapter(cmd))
|
||||
{
|
||||
var dt = new DataTable();
|
||||
da.Fill(dt);
|
||||
|
||||
if (dt.Rows.Count > 0)
|
||||
{
|
||||
var row = dt.Rows[0];
|
||||
var data = new Dictionary<string, object>();
|
||||
foreach (DataColumn col in dt.Columns)
|
||||
{
|
||||
data[col.ColumnName] = row[col] == DBNull.Value ? null : row[col];
|
||||
}
|
||||
return JsonConvert.SerializeObject(new { Success = true, Data = data });
|
||||
}
|
||||
else
|
||||
{
|
||||
return JsonConvert.SerializeObject(new { Success = false, Message = "이전 기록이 없습니다." });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return JsonConvert.SerializeObject(new { Success = false, Message = ex.Message });
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,6 +696,16 @@ namespace Project.Web
|
||||
}
|
||||
break;
|
||||
|
||||
case "JOBREPORT_GET_LAST_BY_PROJECT":
|
||||
{
|
||||
int pidx = json.pidx ?? -1;
|
||||
string projectName = json.projectName ?? "";
|
||||
string result = _bridge.Jobreport_GetLastByProject(pidx, projectName);
|
||||
var response = new { type = "JOBREPORT_LAST_BY_PROJECT", data = JsonConvert.DeserializeObject(result) };
|
||||
await Send(socket, JsonConvert.SerializeObject(response));
|
||||
}
|
||||
break;
|
||||
|
||||
case "JOBREPORT_GET_JOBTYPES":
|
||||
{
|
||||
string process = json.process ?? "";
|
||||
|
||||
Reference in New Issue
Block a user