using MyCode.Project.Domain.Message.Act.AdminReport.PrdReport; using MyCode.Project.Domain.Message.Act.Common; using MyCode.Project.Domain.Message.Request.JackYun; using MyCode.Project.Domain.Message.Request.K3Cloud; using MyCode.Project.Domain.Message.Response.K3Cloud; using MyCode.Project.Domain.Message.Response.LxmZHMDReport; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.JackYun; using MyCode.Project.Repositories; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; namespace MyCode.Project.Services.Implementation { public class PrdOrderService : ServiceBase, IPrdOrderService { private IMOOrdersRepository _MOOrdersRepository; public PrdOrderService(IMOOrdersRepository MOOrdersRepository) { _MOOrdersRepository = MOOrdersRepository; } /// /// 获取生产订单明细 /// /// /// public PageResult GetPrdMoEntryPageList(PagedSearch search) { return _MOOrdersRepository.GetPrdMoEntryPageList(search); } /// /// 生产订单列表 /// /// /// public PageResult GetPrdMoPageList(PagedSearch search) { return _MOOrdersRepository.GetPrdMoPageList(search); } /// /// 获取生产订单执行汇总表数据 /// /// /// /// public PageResult GetMoExecuteSumRespData(PagedSearch search) { throw new NotImplementedException(); } public void UpdatePrdMoExecuteSumData() { var fieldKeys = "FWORKSHOPID,FMOBILLTYPEID,FMOBILLNO,FMOENTRYSEQ,FMATERIALID,FMATERIALNAME,FMATERIALMODEL,FPRDUNITID,FPLANSTARTDATE,FPLANFINISHDATE,FCONVEYDATE,FSTARTDATE,FFINISHDATE,FPLANQTY,FFINISHQTY,FSTOCKINQUAQTY,FSTOCKINFAILQTY,FStockInScrapQty,FSTOCKINREMADEQTY,FReStkQty,FNOSTOCKINQTY,FPLANFINISHPERCENT,FQUAPERCENT,FPICKEDQTY,FSTATUSNAME,FCLOSETYPENAME"; var moTypes = "123f39178eb2424c8449f992e1fff1ee,0e74146732c24bec90178b6fe16a2d1c,281783bb73244d178d41ce550d877af0,b7dd912d4ef545578f0f5d1d08cb2602,00232405fc58a68311e33257e9e17076,00505694499eb16411e3cd16dc62e287,005056945fca85e511e42420f363da25,574e87276ff23a,6672319eb2ba0e"; var orgIds = "1"; var workshopId = ""; ReportDataParam reportDataParam = new ReportDataParam() { ReturnJsonData = true, // 返回JSON数据,金蝶云星空V9.0以上可用 FieldKeys = fieldKeys, IsVerifyBaseDataField = true, StartRow = 0, Limit = 10000, Model = new PRD_MOExecuteDetailRpt() { FMOBillType = moTypes, FBeginConveyDate = DateTime.Now, FEndConveyDate = DateTime.Now.AddDays(1), FBeginPlanFinishDate = DateTime.Now, FEndPlanFinishDate = DateTime.Now.AddDays(1), FBeginPlanStartDate = DateTime.Now, FEndPlanStartDate = DateTime.Now.AddDays(1), FConveyDateInvolve = false, FFinishDateInvolve = false, FStartDateInvolve = true, FCtrlItem = "1", FIsSuspend = "0,1", FStatus = "3,4,5,6", FPrdOrgId = orgIds, FWorkshopId = workshopId.Split(',').Select(n => new PRD_MOExecuteDetailRpt.WorkshopId() { FNumber = n, }), } }; var k3Api = K3CloudHelp.GetK3CloudApiInstance(); var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; var requestString = JsonConvert.SerializeObject(reportDataParam, Formatting.Indented, jsonSetting); var responseString = k3Api.GetSysReportData("PRD_MOExecuteDetailRpt", requestString); var result = JsonConvert.DeserializeObject>>(responseString); if (result.Result.RowCount == 0) { return; } var fieldKeyList = fieldKeys.Split(','); JArray fieldValues = new JArray(); foreach (var item in result.Result.Rows) { JObject pairs = new JObject(); for (int i = 0; i < fieldKeyList.Length; i++) { pairs.Add(fieldKeyList[i], item[i]); } fieldValues.Add(pairs); } } /// /// 获取报表头 /// /// /// public PrdReportHead GetMoDataChartHeadByYearAndMonth(YearAndMonth yearAndMonth) { return _MOOrdersRepository.GetMoDataChartHeadByYearAndMonth(yearAndMonth); } /// /// 获取报表折线图,获取往期12个月的数据 /// /// /// /// public List GetMoDataChartByYearAndMonth(YearAndMonth yearAndMonth) { List result = new List(); var datetime = new DateTime(yearAndMonth.Year, yearAndMonth.Month, 1); for (int i = 0; i < 12; i++) { var datetimeTemp = datetime.AddMonths(-i); YearAndMonth yearAndMonthTemp = new YearAndMonth() { Year = datetimeTemp.Year, Month = datetimeTemp.Month, }; result.Add(_MOOrdersRepository.GetMoDataChartHeadByYearAndMonth(yearAndMonthTemp)); } return result; } public List GetPrdInStockGroupByMaterial(YearAndMonth yearAndMonth) { return _MOOrdersRepository.GetPrdInStockGroupByMaterial(yearAndMonth); } public List GetPrdMoGroupByMaterial(YearAndMonth yearAndMonth) { return _MOOrdersRepository.GetPrdMoGroupByMaterial(yearAndMonth); } public List GetInventoryGroupByMaterial() { return _MOOrdersRepository.GetInventoryGroupByMaterial(); } } }