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, IMOOrdersRepository { public MOOrdersRepository(MyCodeSqlSugarClient context) : base(context) { } /// /// 查询生产订单表体 /// /// /// public PageResult GetPrdMoEntryPageList(PagedSearch 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(sql, where, search.Page, search.PageSize, $@"SEQ desc "); return list; } /// /// 查询生产订单表头 /// /// /// public PageResult 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(sql, where, search.Page, search.PageSize, $@"FDATE desc "); return list; } /// /// 获取看板头数据 /// /// /// 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(sql); result.dateTime = monthEndDate.AddDays(-1); return result; } public List 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(sql); return result; } public List 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(sql); return result; } public List 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(sql); return result; } } }