From 7f973db754fe5746b48b6b90a1a6e05cb7b8ed24 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 17 十月 2025 10:25:38 +0800
Subject: [PATCH] 如果有报工记录,那么初始始采集数为:上一次报工时间后最近一条齿轮数采表的采集数量
---
Services/WomdaaManager.cs | 258 ++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 193 insertions(+), 65 deletions(-)
diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 9410264..019afce 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -1,6 +1,7 @@
锘縰sing PadApplication.DB;
using PadApplication.Entites.DbModels;
using PadApplication.Entites.Dto;
+using SqlSugar;
namespace PadApplication.Services;
@@ -10,16 +11,21 @@
public class WomdaaManager : Repository<Womdaa>
{
/// <summary>
- /// 鏍规嵁宸ョ▼缂栧彿鑾峰彇宸ュ崟鍒楄〃
+ /// 鏍规嵁宸ョ▼缂栧彿鍜屽伐鍗曠姸鎬佽幏鍙栧伐鍗曞垪琛�
/// </summary>
- /// <param name="query">鍖呭惈鏈哄櫒缂栧彿鐨勬煡璇㈡潯浠�</param>
- /// <returns>宸ュ崟鍒楄〃,鎸夋ā鍏稩D鍒嗙粍鍚庣殑绗竴鏉¤褰�</returns>
- public List<VOrder> GetWomdaasByEngineeringNo(OrderMachineDto query)
+ /// <param name="query">鍖呭惈鏈哄櫒缂栧彿鍜屽伐鍗曠姸鎬佺殑鏌ヨ鏉′欢</param>
+ /// <returns>宸ュ崟鍒楄〃</returns>
+ public List<VOrderBycl> GetWomdaasByEngineeringNo(OrderMachineDto query)
{
var list = VOrders(query);
- var vOrders = list.GroupBy(p => p.moldId)
- .Select(g => g.First()).ToList();
- return vOrders;
+
+ // 鎸夊伐鍗曠姸鎬佺瓫閫�
+ if (query.OrderStatus != null && query.OrderStatus.Any())
+ {
+ list = list.Where(p => p.Daa018 != null && query.OrderStatus.Contains(p.Daa018)).ToList();
+ }
+
+ return list;
}
/// <summary>
@@ -27,33 +33,16 @@
/// </summary>
/// <param name="query">鍖呭惈鏈哄櫒缂栧彿鐨勬煡璇㈡潯浠�</param>
/// <returns>鍚堝苟鍚庣殑宸ュ崟鍒楄〃</returns>
- private List<VOrder> VOrders(OrderMachineDto query)
+ private List<VOrderBycl> VOrders(OrderMachineDto query)
{
- // 鏌ヨ鏈畬宸ヤ笖瀹為檯鏁伴噺涓嶇瓑浜庤鍒掓暟閲忕殑宸ュ崟
- var list = Db.Queryable<VOrder>()
+ var list = Db.Queryable<VOrderBycl>()
.Where(s => s.Daa018 != "瀹屽伐" &&
- s.MachineNo == query.machineNo
- && s.Daa011 != s.Daa008
- )
- .Select<VOrder>(s => new VOrder
- {
- ID = s.ID,
- moldId = s.moldId,
- moldName = s.moldName,
- moldModel = s.moldModel
- })
+ s.MachineNo == query.machineNo)
.ToList();
- // 鏌ヨ鎸囧畾鏈哄櫒鐨勫伐鍗�
- var orders = Db.Queryable<VOrderA>()
+ var orders = Db.Queryable<VOrderABycl>()
.Where(s => s.MachineNo == query.machineNo)
- .Select<VOrder>(s => new VOrder
- {
- ID = s.Id,
- moldId = s.moldId,
- moldName = s.moldName,
- moldModel = s.moldModel
- })
+ .Select<VOrderBycl>()
.ToList();
list.AddRange(orders);
@@ -67,19 +56,17 @@
/// 鍖呭惈鏈哄櫒缂栧彿锛坢achineNo锛夊拰宸ョ▼缂栧彿锛坋ngineeringNo锛夌殑鏌ヨ鏉′欢
/// </param>
/// <returns>
- /// 杩斿洖绗﹀悎鏉′欢鐨勫伐鍗曪紙VOrder锛夊垪琛�
+ /// 杩斿洖绗﹀悎鏉′欢鐨勫伐鍗曪紙VOrdreBycl锛夊垪琛�
/// </returns>
- public List<VOrder> GetWomdaasByMachine(OrderMachineDto query)
+ public List<VOrderBycl> GetWomdaasByMachine(OrderMachineDto query)
{
// 鑾峰彇褰撳墠鏃ユ湡瀛楃涓诧紝鏍煎紡涓� yyyy-MM-dd
var date = DateTime.Now.ToString("yyyy-MM-dd");
// 鑾峰彇鎸囧畾鏈哄櫒涓嬫湭瀹屽伐涓斿疄闄呮暟閲忎笉绛変簬璁″垝鏁伴噺鐨勫伐鍗曪紙鍚堝苟VOrder鍜孷OrderA锛�
var list = VOrders(query);
-
// 鏍规嵁宸ョ▼缂栧彿锛坋ngineeringNo锛夌瓫閫夊嚭瀵瑰簲鐨勫伐鍗曪紙moldId == engineeringNo锛�
- var vOrders = list.Where(s => s.moldId == query.engineeringNo).ToList();
-
+ var vOrders = list.Where(s => s.cutterId == query.engineeringNo).ToList();
// 鑾峰彇绛涢�夊悗宸ュ崟鐨処D闆嗗悎
var ids = vOrders.Select(s => s.ID).ToArray();
@@ -87,9 +74,9 @@
// 1. 鏈哄彴缂栧彿绛変簬浼犲叆鐨刴achineNo
// 2. 缂栬緫鏃ユ湡涓轰粖澶╂垨涓虹┖
// 3. 宸ュ崟ID鍦╥ds闆嗗悎涓�
- return Db.Queryable<VOrder>()
+ return Db.Queryable<VOrderBycl>()
.Where(s =>
- s.MachineNo == query.machineNo // 璁惧缂栧彿
+ s.MachineNo == query.machineNo
&& (s.EditDate == date || s.EditDate == null)
&& ids.Contains(s.ID))
.ToList();
@@ -100,21 +87,88 @@
/// </summary>
/// <param name="query">鍖呭惈鏈哄櫒缂栧彿鐨勬煡璇㈡潯浠�</param>
/// <returns>闇�瑕佹樉绀虹殑宸ュ崟鍒楄〃</returns>
- public List<VOrder> GetWomdaasByShow(OrderMachineDto query)
+ public List<VOrderBycl> GetWomdaasByShow(OrderMachineDto query)
{
+ // 鏌ヨ闇�瑕佹樉绀虹殑宸ュ崟ID
var ids = Db.Queryable<MesOrderSelect>()
- .Where(b => b.MachineNo == query.machineNo
- && b.IsShow == 0).Select(s => s.OrderId)
+ .Where(b => b.MachineNo == query.machineNo && b.IsShow == 0)
+ .Select(s => s.OrderId)
.ToList();
+ // 鍘婚噸
var decimals = ids.Distinct().ToList();
var date = DateTime.Now.ToString("yyyy-MM-dd");
- return Db.Queryable<VOrder>()
+ // 濡傛灉娌℃湁宸ュ崟ID锛岀洿鎺ヨ繑鍥炵┖鍒楄〃
+ if (decimals.Count == 0)
+ return new List<VOrderBycl>();
+
+ // 鏌ヨ榻胯疆鏁伴噰琛�
+ var numericalList = Db.Queryable<MesNumericalBycl>()
+ .Where(x => ids.Contains(x.OrderId ?? 0))
+ .OrderBy(x => x.CjTiem)
+ .ToList();
+
+ var vOrderBycl = new VOrderBycl();
+ if (numericalList.Count > 0)
+ {
+ // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+ vOrderBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+ // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+ vOrderBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+ }
+ else
+ {
+ vOrderBycl.StartCjNum = 0;
+ vOrderBycl.CurrentCjNum = 0;
+ }
+
+ // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴娆℃姤宸ユ椂闂�
+ var lastReport = Db.Queryable<MesReporting>()
+ .Where(r => r.BillNo != null && r.BillNo.Contains(query.orderNo))
+ .OrderBy(r => r.BgDate, OrderByType.Desc)
+ .First();
+
+ if (lastReport == null)
+ {
+ // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+ vOrderBycl.InitCjNum = vOrderBycl.StartCjNum;
+ }
+ else
+ {
+ // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负涓婁竴娆℃姤宸ユ椂闂村悗鏈�杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
+ var afterReportNum = numericalList
+ .Where(x =>
+ DateTime.TryParse(x.CjTiem, out var cjTiemDt) &&
+ lastReport.BgDate.HasValue &&
+ cjTiemDt > lastReport.BgDate.Value)
+ .OrderBy(x => DateTime.Parse(x.CjTiem))
+ .FirstOrDefault();
+
+ vOrderBycl.InitCjNum = afterReportNum?.CjNum ?? vOrderBycl.StartCjNum;
+ }
+
+ var startCjNum = vOrderBycl.StartCjNum;
+ var currentCjNum = vOrderBycl.CurrentCjNum;
+ var initCjNum = vOrderBycl.InitCjNum;
+
+ // 鏌ヨ宸ュ崟瑙嗗浘锛岀瓫閫夊嚭闇�瑕佹樉绀虹殑宸ュ崟锛屽彧鍙栨渶鏂颁竴鏉�
+ var orders = Db.Queryable<VOrderBycl>()
.Where(c =>
decimals.Contains(c.ID) &&
(c.EditDate == date || c.EditDate == null))
+ .OrderBy(c => c.EditDate, OrderByType.Desc)
+ .Take(1)
.ToList();
+
+ foreach (var order in orders)
+ {
+ order.StartCjNum = startCjNum;
+ order.CurrentCjNum = currentCjNum;
+ order.InitCjNum = initCjNum;
+ }
+
+ return orders;
}
/// <summary>
@@ -122,78 +176,152 @@
/// </summary>
/// <param name="query">鍖呭惈宸ュ崟ID鍜屽伐鍗曞彿鐨勬煡璇㈡潯浠�</param>
/// <returns>宸ュ崟璇︾粏淇℃伅</returns>
- public VOrder GetWomdaaById(OrderMachineDto query)
+ public VOrderBycl GetWomdaaById(OrderMachineDto query)
{
var date = DateTime.Now.ToString("yyyy-MM-dd");
- var count = Db.Queryable<DeviceStatus>()
+ var count = Db.Queryable<DeviceStatusBycl>()
.Where(b => b.OrderNo == query.orderNo && b.EditDate == date)
.Count();
- var vOrder = Db.Queryable<VOrder>()
+ var VOrdrerBycl = Db.Queryable<VOrderBycl>()
.Where(s => s.ID == query.OrderId)
.WhereIF(count > 0, s => s.EditDate == date)
.OrderByDescending(s => s.workStartDate).First();
- if (vOrder == null) return null;
+ if (VOrdrerBycl == null) return null;
- vOrder.YJQTY ??= 0;
+ VOrdrerBycl.YJQTY ??= 0;
var mesOrderSelect = Db.Queryable<MesOrderSelect>()
- .Where(a => a.OrderId == vOrder.ID
+ .Where(a => a.OrderId == VOrdrerBycl.ID
&& a.IsShow == 0).First();
- vOrder.todayRunTime = 0;
- vOrder.TodayFaultNum = 0;
+ VOrdrerBycl.todayRunTime = 0;
+ VOrdrerBycl.TodayFaultNum = 0;
if (mesOrderSelect != null)
{
- vOrder.todayRunTime = mesOrderSelect.TjTime;
- vOrder.TodayFaultNum = mesOrderSelect.TjCount;
+ VOrdrerBycl.todayRunTime = mesOrderSelect.TjTime;
+ VOrdrerBycl.TodayFaultNum = mesOrderSelect.TjCount;
if (mesOrderSelect.TjTime is null or 0)
{
- vOrder.JDL = 100;
+ VOrdrerBycl.JDL = 100;
}
else
{
var round = Math.Round(mesOrderSelect.TjTime.Value / 1440, 2);
var round1 = (1 - round) * 100;
- vOrder.JDL = round1;
+ VOrdrerBycl.JDL = round1;
}
}
- vOrder.wjQty = vOrder.Daa008 - vOrder.Daa011;
+ VOrdrerBycl.wjQty = VOrdrerBycl.Daa008 - VOrdrerBycl.Daa011;
- //DevMachine
- var devMachine = Db.Queryable<DevMachine>()
- .Where(s => s.MachineNo == vOrder.MachineNo)
+ var devMachine = Db.Queryable<DevMacBycl>()
+ .Where(s => s.MachineNo == VOrdrerBycl.MachineNo)
.First();
-
var sql = string.Format(
"select FINAL_RESULT from MES_EQ_SPOT_CHECKS where department_no = 'XS0101' and EQ_NO = '{0}' and substr(SUBMIT_DATE, 1, 10) = to_char(sysdate, 'yyyy-mm-dd')",
devMachine.UniqueBarcode);
var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
+ VOrdrerBycl.finalResult = sqlQuerySingle;
- vOrder.finalResult = sqlQuerySingle;
+ // 鏌ヨMES_NUMERICAL_BYCL琛紝鑾峰彇寮�宸ユ暟閲囧拰褰撳墠鏁伴噰
+ var numericalList = Db.Queryable<MesNumericalBycl>()
+ .Where(x => x.OrderId == VOrdrerBycl.ID)
+ .OrderBy(x => x.CjTiem)
+ .ToList();
- return vOrder;
+ if (numericalList.Count > 0)
+ {
+ // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+ VOrdrerBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+ // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+ VOrdrerBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+ }
+ else
+ {
+ VOrdrerBycl.StartCjNum = 0;
+ VOrdrerBycl.CurrentCjNum = 0;
+ }
+
+ return VOrdrerBycl;
}
/// <summary>
- /// 鏍规嵁宸ュ崟ID鑾峰彇鎵撳嵃淇℃伅
+ /// 鏍规嵁宸ュ崟ID鑾峰彇鎶ュ伐淇℃伅
/// </summary>
/// <param name="query">鍖呭惈宸ュ崟ID鐨勬煡璇㈡潯浠�</param>
- /// <returns>宸ュ崟鎵撳嵃淇℃伅</returns>
+ /// <returns>宸ュ崟鎶ュ伐淇℃伅</returns>
public VPrint GetWomdaaPrintById(OrderMachineDto query)
{
var vPrint = Db.Queryable<VPrint>()
- .Where(s => s.Id == query.OrderId).First();
- vPrint.RmiPrQty =
- (int)Math.Ceiling(
- (double)((vPrint.Bqty - vPrint.SQuantity) / vPrint.Qqty));
+ .Where(s => s.Id == query.OrderId)
+ .First();
+
+ if (vPrint == null)
+ return null;
+
+ // 闃叉闄ら浂鍜岀┖鍊煎紓甯�
+ var bqty = vPrint.Bqty ?? 0;
+ var sQuantity = vPrint.SQuantity ?? 0;
+ var qqty = vPrint.Qqty ?? 0;
+
+ if (qqty == 0)
+ {
+ vPrint.RmiPrQty = 0;
+ }
+ else
+ {
+ // 鍓╀綑鍙墦鍗板紶鏁� = (鍙墦鍗版�绘暟閲� - 宸叉墦鍗版暟閲�) / 鏍囧噯鍖呰鏁帮紝鍚戜笂鍙栨暣
+ var remain = bqty - sQuantity;
+ vPrint.RmiPrQty = remain > 0 ? (int)Math.Ceiling((double)remain / (double)qqty) : 0;
+ }
+
return vPrint;
}
+
+ public (List<MesReportingBgDto> tbBillList, int totalCount) GetByBillNoBG(
+ string billNo, string machineNo, DateTime? from, DateTime? to, int pageIndex, int pageSize)
+ {
+ var query = Db.Queryable<MesReporting>()
+ // 鍏宠仈鍛樺伐淇℃伅琛紝浣跨敤鎶ュ伐浜虹紪鐮佸尮閰嶅憳宸ョ紪鐮�
+ .LeftJoin<MesStaff>((r, s) => r.BgPerson == s.StaffNo)
+ .Where((r, s) => r.BillNo == billNo);
+
+ if (!string.IsNullOrWhiteSpace(machineNo))
+ query = query.Where((r, s) => r.MachineNo == machineNo);
+
+ if (from.HasValue)
+ query = query.Where((r, s) => r.BgDate >= from.Value);
+
+ if (to.HasValue)
+ query = query.Where((r, s) => r.BgDate < to.Value.AddDays(1));
+
+ var totalCount = query.Count();
+
+ var tbBillList = query.OrderBy((r, s) => r.BgDate, OrderByType.Desc)
+ .Select((r, s) => new MesReportingBgDto
+ {
+ Id = (long)r.Id,
+ BillNo = r.BillNo,
+ ItemNo = r.ItemNo,
+ MachineNo = r.MachineNo,
+ StaffNo = r.BgPerson,//鎶ュ伐浜虹紪鍙�
+ StaffName = SqlFunc.IsNullOrEmpty(s.StaffName) ? r.BgPerson : s.StaffName, // 濡傛湁鐙珛濮撳悕瀛楁鍙浛鎹�
+ BgDate = r.BgDate,//鎶ュ伐鏃堕棿
+ CsQty = SqlFunc.ToInt32(r.CsQty),//鍒濆閲囬泦鏁�
+ CjQty = SqlFunc.ToInt32(r.CjQty),//鎶ュ伐鏃堕噰闆嗘暟
+ BfQty = SqlFunc.ToInt32(r.BfQty),//涓嶈壇鏁伴噺
+ OkQty = SqlFunc.ToInt32(r.OkQty)//鑹搧鏁伴噺
+ })
+ .ToPageList((pageIndex < 1 ? 1 : pageIndex),
+ (pageSize < 1 ? 200 : (pageSize > 1000 ? 1000 : pageSize)), ref totalCount);
+
+ return (tbBillList, totalCount);
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3