Files
YunTongJackYunTask/Reportapi/MyCode.Project.Repositories/MOOrdersRepository.cs
2025-09-02 14:52:56 +08:00

271 lines
8.5 KiB
C#

using MyCode.Project.Domain.Message;
using MyCode.Project.Domain.Message.Act.AdminReport.PrdReport;
using MyCode.Project.Domain.Message.Act.Common;
using MyCode.Project.Domain.Message.Response.LxmZHMDReport;
using MyCode.Project.Domain.Model;
using MyCode.Project.Domain.Repositories;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Search;
using MyCode.Project.Repositories.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCode.Project.Repositories
{
public class MOOrdersRepository : Repository<JackOrders>, IMOOrdersRepository
{
public MOOrdersRepository(MyCodeSqlSugarClient context) : base(context)
{ }
/// <summary>
/// 查询生产订单表体
/// </summary>
/// <param name="search"></param>
/// <returns></returns>
public PageResult<PrdMoOrderEntryResp> GetPrdMoEntryPageList(PagedSearch<IdAct> search)
{
SearchCondition where = new SearchCondition();
where.AddSqlCondition($"t1e.FID={search.Condition.Id} ", true);
string sql = $@"
SELECT
t1e.FSEQ Seq,
tm_l.FNAME MaterialName,
t2_l.FNAME DeptName,
t1e.FQTY Qty,
t1e_a.FSTOCKINFAILAUXQTY + t1e_a.FSTOCKINQUAAUXQTY InStockQty,
CASE
WHEN t1e_a.FSTATUS = 1 THEN '计划'
WHEN t1e_a.FSTATUS = 2 THEN '计划确认'
WHEN t1e_a.FSTATUS = 3 THEN '下达'
WHEN t1e_a.FSTATUS = 4 THEN '开工'
WHEN t1e_a.FSTATUS = 5 THEN '完工'
WHEN t1e_a.FSTATUS = 6 THEN '结案'
WHEN t1e_a.FSTATUS = 7 THEN '结算'
ELSE ''
END MoStatus
FROM
T_PRD_MOENTRY t1e
LEFT JOIN T_PRD_MOENTRY_A t1e_a ON t1e.FENTRYID = t1e_a.FENTRYID
LEFT JOIN T_BD_MATERIAL tm ON t1e.FMATERIALID = tm.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L tm_l ON tm_l.FMATERIALID = tm.FMATERIALID
AND tm_l.FLOCALEID = 2052
LEFT JOIN T_BD_DEPARTMENT t2 ON t1e.FWORKSHOPID = t2.FDEPTID
LEFT JOIN T_BD_DEPARTMENT_L t2_l ON t2.FDEPTID = t2_l.FDEPTID
AND t2_l.FLOCALEID = 2052
";
var list = this.SelectListPage<PrdMoOrderEntryResp>(sql, where, search.Page, search.PageSize, $@"SEQ desc ");
return list;
}
/// <summary>
/// 查询生产订单表头
/// </summary>
/// <param name="search"></param>
/// <returns></returns>
public PageResult<PrdMoOrderResp> GetPrdMoPageList(PagedSearch search)
{
SearchCondition where = new SearchCondition();
where.AddSqlCondition("1=1 ", true);
string sql = $@"
SELECT
*
FROM
(
SELECT
t1.FID Fid,
t1.FBILLNO FBillNo,
t1.FDATE FDate,
SUM(t1e.FQTY) Qty,
SUM(
t1e_a.FSTOCKINFAILAUXQTY + t1e_a.FSTOCKINQUAAUXQTY
) InStockQty
FROM
T_PRD_MO t1
LEFT JOIN T_PRD_MOENTRY t1e ON t1.FID = t1e.FID
LEFT JOIN T_PRD_MOENTRY_A t1e_a ON t1e.FENTRYID = t1e_a.FENTRYID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C'
GROUP BY
t1.FID,
t1.FBILLNO,
t1.FDATE
) t1Temp
";
var list = this.SelectListPage<PrdMoOrderResp>(sql, where, search.Page, search.PageSize, $@"FDATE desc ");
return list;
}
/// <summary>
/// 获取看板头数据
/// </summary>
/// <param name="yearAndMonth"></param>
/// <returns></returns>
public PrdReportHead GetMoDataChartHeadByYearAndMonth(YearAndMonth yearAndMonth)
{
var yearStartDate = new DateTime(yearAndMonth.Year, 1, 1);
var yearEndDate = yearStartDate.AddYears(1);
var monthStartDate = new DateTime(yearAndMonth.Year, yearAndMonth.Month, 1);
var monthEndDate = monthStartDate.AddMonths(1);
string sql = $@"
SELECT
(
SELECT
SUM(t1e.FQTY) YearPrdQty
FROM
T_PRD_MO t1
INNER JOIN T_PRD_MOENTRY t1e ON t1.FID = t1e.FID
WHERE
1 = 1
AND t1.FDATE >= {yearStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {yearEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
) YearPrdQty,
(
SELECT
SUM(t1e.FQTY) MonthPrdQty
FROM
T_PRD_MO t1
INNER JOIN T_PRD_MOENTRY t1e ON t1.FID = t1e.FID
WHERE
1 = 1
AND t1.FDATE >= {monthStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {monthEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
) MonthPrdQty,
(
SELECT
SUM(t1e.FREALQTY) InStockQty
FROM
T_PRD_INSTOCK t1
INNER JOIN T_PRD_INSTOCKENTRY t1e ON t1.FID = t1e.FID
WHERE
1 = 1
AND t1.FDATE >= {yearStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {yearEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
) YearInStockQty,
(
SELECT
SUM(t1e.FREALQTY) InStockQty
FROM
T_PRD_INSTOCK t1
INNER JOIN T_PRD_INSTOCKENTRY t1e ON t1.FID = t1e.FID
WHERE
1 = 1
AND t1.FDATE >= {monthStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {monthEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
) MonthPrdQty,
(
SELECT
SUM(t1.FQTY) StockQty
FROM
T_STK_INVENTORY t1
) StockQty
";
var result = this.SelectFirst<PrdReportHead>(sql);
result.dateTime = monthEndDate.AddDays(-1);
return result;
}
public List<MaterialAndQty> GetPrdInStockGroupByMaterial(YearAndMonth yearAndMonth)
{
var yearStartDate = new DateTime(yearAndMonth.Year, 1, 1);
var yearEndDate = yearStartDate.AddYears(1);
var monthStartDate = new DateTime(yearAndMonth.Year, yearAndMonth.Month, 1);
var monthEndDate = monthStartDate.AddMonths(1);
var sql = $@"
SELECT
tm.FMASTERID MaterialMasterId,
tm.FNUMBER MaterialNumber,
tm_l.FNAME MaterialName,
SUM(t1e.FREALQTY) Qty
FROM
T_PRD_INSTOCK t1
INNER JOIN T_PRD_INSTOCKENTRY t1e ON t1.FID = t1e.FID
INNER JOIN T_BD_MATERIAL tm ON t1e.FMATERIALID = tm.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L tm_l ON tm.FMATERIALID = tm_l.FMATERIALID
AND tm_l.FLOCALEID = 2052
WHERE
1 = 1
AND t1.FDATE >= {yearStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {yearEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
GROUP BY
tm.FMASTERID,
tm.FNUMBER,
tm_l.FNAME
";
var result = this.SelectList<MaterialAndQty>(sql);
return result;
}
public List<MaterialAndQty> GetPrdMoGroupByMaterial(YearAndMonth yearAndMonth)
{
var yearStartDate = new DateTime(yearAndMonth.Year, 1, 1);
var yearEndDate = yearStartDate.AddYears(1);
var monthStartDate = new DateTime(yearAndMonth.Year, yearAndMonth.Month, 1);
var monthEndDate = monthStartDate.AddMonths(1);
var sql = $@"
SELECT
tm.FMASTERID MaterialMasterId,
tm.FNUMBER MaterialNumber,
tm_l.FNAME MaterialName,
SUM(t1e.FQTY) Qty
FROM
T_PRD_MO t1
INNER JOIN T_PRD_MOENTRY t1e ON t1.FID = t1e.FID
INNER JOIN T_BD_MATERIAL tm ON t1e.FMATERIALID = tm.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L tm_l ON tm.FMATERIALID = tm_l.FMATERIALID
AND tm_l.FLOCALEID = 2052
WHERE
1 = 1
AND t1.FDATE >= {yearStartDate.ToString("yyyy-MM-dd")}
AND t1.FDATE < {yearEndDate.ToString("yyyy-MM-dd")}
AND t1.FDOCUMENTSTATUS = 'C'
GROUP BY
tm.FMASTERID,
tm.FNUMBER,
tm_l.FNAME
";
var result = this.SelectList<MaterialAndQty>(sql);
return result;
}
public List<MaterialAndQty> GetInventoryGroupByMaterial()
{
var sql = $@"
SELECT
tm.FMASTERID MaterialMasterId,
tm.FNUMBER MaterialNumber,
tm_l.FNAME MaterialName,
SUM(t1e.FQTY) Qty
FROM
T_STK_INVENTORY t1e
INNER JOIN T_BD_MATERIAL tm ON t1e.FMATERIALID = tm.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L tm_l ON tm.FMATERIALID = tm_l.FMATERIALID
AND tm_l.FLOCALEID = 2052
WHERE
1 = 1
GROUP BY
tm.FMASTERID,
tm.FNUMBER,
tm_l.FNAME
";
var result = this.SelectList<MaterialAndQty>(sql);
return result;
}
}
}