271 lines
8.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |