|
|
@@ -38,14 +38,38 @@ public class FqcInspectionService : IDynamicApiController, ITransient
|
|
|
{
|
|
|
if (inspBillId <= 0) return null;
|
|
|
var tenantId = ResolveTenantOrThrow();
|
|
|
+ // 头:检验单本体(i) + LEFT JOIN 报检 qms_fqcbj(q, by lydjbh=FBILLNO AND id=hid) 补齐报检申请信息
|
|
|
var head = (await _db.Ado.SqlQueryAsync<FqcInspHeadRow>(
|
|
|
- @"SELECT id AS Id, FBILLNO AS BillNo, lydjbh AS SourceBillNo, wlmc AS MaterialName, ggxh AS Spec,
|
|
|
- scph AS ProductionBatchNo, sczld AS ProductionOrderNo, jgbh AS SpecNo, jgbb AS SpecVersion,
|
|
|
- IFNULL(pd,'') AS Pd, hgsl AS QualifiedQty, bhgsl AS UnqualifiedQty, FBILLSTATUS AS BillStatus
|
|
|
- FROM qms_qcpp_inspbill WHERE id=@id AND tenant_id=@t LIMIT 1",
|
|
|
+ @"SELECT i.id AS Id, i.FBILLNO AS BillNo, i.lydjbh AS SourceBillNo, i.wlmc AS MaterialName, i.ggxh AS Spec,
|
|
|
+ i.scph AS ProductionBatchNo, i.sczld AS ProductionOrderNo, i.jgbh AS SpecNo, i.jgbb AS SpecVersion,
|
|
|
+ IFNULL(i.pd,'') AS Pd, i.hgsl AS QualifiedQty, i.bhgsl AS UnqualifiedQty, i.FBILLSTATUS AS BillStatus,
|
|
|
+ i.sczldsl AS OrderQty,
|
|
|
+ q.wlbm AS MaterialCode, q.sl AS ApplyQty, q.yxj AS Priority, q.jfbh AS FireNo,
|
|
|
+ q.FAPPLYUSER AS Applicant, q.FAPPLYTIME AS ApplyTime, q.jyfzr AS OwnerId, q.FCOMMENT AS Remark
|
|
|
+ FROM qms_qcpp_inspbill i
|
|
|
+ LEFT JOIN qms_fqcbj q ON q.FBILLNO = i.lydjbh AND q.id = i.hid AND q.tenant_id = i.tenant_id
|
|
|
+ WHERE i.id=@id AND i.tenant_id=@t LIMIT 1",
|
|
|
new SugarParameter("@id", inspBillId), new SugarParameter("@t", tenantId))).FirstOrDefault();
|
|
|
if (head == null) return null;
|
|
|
|
|
|
+ // 检验负责人 jyfzr 双语义:认领/调配写 SysUser id(数字,可能跨租户),检验流程提交写姓名字符串。
|
|
|
+ // 数字 → ClearFilter 反解姓名(解不到回落原值);非数字 → 本就是姓名,直接展示。
|
|
|
+ if (!string.IsNullOrWhiteSpace(head.OwnerId))
|
|
|
+ {
|
|
|
+ if (long.TryParse(head.OwnerId, out var ownerUid))
|
|
|
+ {
|
|
|
+ var owner = await _db.Queryable<SysUser>().ClearFilter()
|
|
|
+ .Where(u => u.Id == ownerUid)
|
|
|
+ .Select(u => new { u.RealName, u.Account })
|
|
|
+ .FirstAsync();
|
|
|
+ head.OwnerName = owner != null ? (owner.RealName ?? owner.Account) : head.OwnerId;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ head.OwnerName = head.OwnerId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
var jSel = string.Join(",", Enumerable.Range(1, SampleCols).Select(i => $"j{i}"));
|
|
|
var raw = await _db.Ado.SqlQueryAsync<dynamic>(
|
|
|
$@"SELECT id, xh, jyxm, IFNULL(lrlx,'') lrlx, IFNULL(sx,'') sx, IFNULL(xx,'') xx, jsyq, jsbz, cyfa, ybl,
|
|
|
@@ -192,6 +216,17 @@ public class FqcInspHeadRow
|
|
|
public decimal? QualifiedQty { get; set; }
|
|
|
public decimal? UnqualifiedQty { get; set; }
|
|
|
public string? BillStatus { get; set; }
|
|
|
+ // ── 报检申请信息(LEFT JOIN qms_fqcbj)──
|
|
|
+ public decimal? OrderQty { get; set; }
|
|
|
+ public string? MaterialCode { get; set; }
|
|
|
+ public decimal? ApplyQty { get; set; }
|
|
|
+ public string? Priority { get; set; }
|
|
|
+ public string? FireNo { get; set; }
|
|
|
+ public string? Applicant { get; set; }
|
|
|
+ public string? ApplyTime { get; set; }
|
|
|
+ public string? OwnerId { get; set; }
|
|
|
+ public string? OwnerName { get; set; }
|
|
|
+ public string? Remark { get; set; }
|
|
|
}
|
|
|
|
|
|
public class FqcSaveDetailInput
|