using System; using System.Data; using System.Linq; using CSFramework.DB; using CSFrameworkV5.Models; using CSFrameworkV5.Core; using CSFrameworkV5.Common; using CSFrameworkV5.Interfaces; using CSFrameworkV5.Business; using CSFrameworkV5.DataAccess; using CSFrameworkV5.Order.womdaa; /*=================================================================== * 程序说明: WOMDAA的业务逻辑层源码 * 作者资料: 孙中吕 * 创建日期: 2024/05/20 05:58:20 * 最后修改: 2024/05/20 05:58:20 * * 注: 本文件由代码生成器(Code Generator)自动生成。 * (此源码文件请放置在 YourProject.Business 模块) * 版权所有 Copyright 2006~2024, C/S框架网(www.cscode.net) *===================================================================*/ namespace CSFrameworkV5.Business { /// /// 业务逻辑层:bllWOMDAA /// public class bllWOMDAA : bllBaseBusiness { private dalWOMDAA _DAL = null; /// /// 构造器 /// public bllWOMDAA() { _KeyFieldName = WOMDAA.__KeyName; //主键字段 _SummaryTableName = WOMDAA.__TableName; //表名 _WriteDataLog = false; //保存数据修改日志 _CurrentAppNAME = "排产报工"; _DAL = new dalWOMDAA(Loginer.CurrentUser); //实例化DAL层 } /// ///根据单据号码取业务数据 /// public override DataSet GetDataByKey(string keyValue, bool resetCurrent) { var ds = _DAL.GetDataByKey(keyValue); SetNumericDefaultValue(ds); //设置预设值 if (resetCurrent) _CurrentBusiness = ds; //保存当前业务数据的对象引用 return ds; } /// ///删除单据 /// public override bool Delete(string keyValue) { return _DAL.Delete(keyValue); } /// ///检查单号是否存在 /// public bool CheckNoExists(string keyValue) { return _DAL.CheckNoExists(keyValue); } /// ///保存数据 /// public override SaveResult Update(DataSet saveData) { return _DAL.Update(saveData); //交给数据层处理 } /// ///审核单据 /// public override bool ApprovalBusiness(DataRow summaryRow) { var key = ConvertEx.ToString(summaryRow[_KeyFieldName]); var P = new QueryApproval { DBID = Loginer.CurrentUser.DBID, TableName = _SummaryTableName, KeyFieldName = _KeyFieldName, KeyValue = key, AppDate = DateTime.Now, AppUser = Loginer.CurrentUser.Account, FlagApp = "Y", AppNAME = _CurrentAppNAME }; if (_DAL.ApprovalBusiness(P)) { summaryRow[CommonFields.AppDate] = DateTime.Now; summaryRow[CommonFields.AppUser] = Loginer.CurrentUser.Account; summaryRow[CommonFields.FlagApp] = "Y"; summaryRow[CommonFields.AppNAME] = _CurrentAppNAME; return true; } return false; } /// ///反审核单据。 /// public override bool ApprovalBusinessUndo(DataRow summaryRow) { var key = ConvertEx.ToString(summaryRow[_KeyFieldName]); var P = new QueryApproval { DBID = Loginer.CurrentUser.DBID, TableName = _SummaryTableName, KeyFieldName = _KeyFieldName, KeyValue = key, AppDate = DateTime.Now, AppUser = Loginer.CurrentUser.Account, FlagApp = "N", AppNAME = _CurrentAppNAME }; if (_DAL.ApprovalBusiness(P)) { summaryRow[CommonFields.AppDate] = DateTime.Now; summaryRow[CommonFields.AppUser] = Loginer.CurrentUser.Account; summaryRow[CommonFields.FlagApp] = "N"; return true; } else { return false; } } /// ///新增一张业务单据 /// public override void NewBusiness() { var summaryTable = _CurrentBusiness.Tables[WOMDAA.__TableName]; var row = summaryTable.Rows.Add(); //新增状态:主表记录设置初始值 row[WOMDAA.__KeyName] = Guid.NewGuid(); } /// ///创建用于保存的临时数据 /// public override DataSet CreateSaveData(DataSet sourceData) { DataBindRow.EndEdit(); //创建用于保存的临时数据,包含主表或明细表 var save = new DataSet(); save.Tables.Add(DataBinder.Copy()); //将<主表>添加到数据集 var row = save.Tables[0].Rows[0]; var s = row["DAA001"].ToString(); if (string.IsNullOrEmpty(s)) { Msg.Warning("工单号不能为空!"); return null; } var db = SqlSugarHelper.GetInstance(); //如果是新增状态下就校验工单是否重复 if (row.RowState == DataRowState.Added) { var count = db.Queryable() .Where(a => a.Daa001 == s).Count(); if (count > 0) { Msg.Warning("工单号已存在!"); return null; } } //第一次修改的状态是Modified,再次修改时会是Unchanged //也有可能是在详情页中修改的状态是Unchanged else if (row.RowState == DataRowState.Unchanged || row.RowState == DataRowState.Modified) { //同一个机台下只能存在一个开工 //工单状态 var daa022 = row["DAA022"].ToString(); //产线 var daa042 = row["DAA042"].ToString(); var lineNo = row["LINE_NO"].ToString(); var deptName = row["DeptName"].ToString(); if ("开工".Equals(daa022)) { //校验跳过自己 var single = db.Queryable() .Where(x => x.Daa022 == daa022 && x.Daa042 == daa042) .Single(); if (single != null) if (single.Daa001 != s) { var count = db.Queryable() .Where(s1 => s1.Daa042 == daa042 && s1.Daa022 == daa022 && s1.DeptName == deptName && s1.LineNo == lineNo).Count(); if (count > 0) { Msg.Warning(daa042 + "这条产线已经有工单" + daa022 + ",不允许" + daa022 + "新的工单"); return null; } } } } //Console.WriteLine(s); UpdateCommonFieldsValue(save.Tables[0]); //更新公共字段数据 //收集明细表数据 var detail = sourceData.Tables[DAA01.__TableName].GetChanges(); if (detail != null && detail.Rows.Count > 0) { if (detail.Rows.Count == 1 && detail.Rows[0].RowState == DataRowState.Deleted) { SqlSugarHelper.UseTransactionWithOracle(db1 => { var id = row["ID"].ToString(); return db1.Updateable() .SetColumns(order => order.ISOk == 0) .Where(order => order.id == id).ExecuteCommand(); }); } else { //报工后反写已完成数 //报工数等于工单数时自动更改为已完工的状态 var pid = detail.Rows[0]["pid"].ToString(); var single = db.Queryable() .Where(s1 => s1.id == pid).Single(); var sum = db.Queryable() .Where(daa01 => daa01.pid == pid).Sum(d => d.ISOK); var i = detail.AsEnumerable() .Sum(r => r.Field("ISOK")); var sum1 = sum + i; var user = Loginer.CurrentUser.Account; var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); SqlSugarHelper.UseTransactionWithOracle(db1 => { var isUpdateColumns = single.Daa027 <= sum1; return db1.Updateable() .SetColumns(order => order.ISOk == sum1) .SetColumnsIF(isUpdateColumns, order => order.Daa022 == "完工") .SetColumnsIF(isUpdateColumns, order => order.Daa022Date == time) .SetColumnsIF(isUpdateColumns, order => order.Daa022By == user) .Where(order => order.id == pid).ExecuteCommand(); }); } UpdateCommonFieldsValue(detail); //更新明细表的公共字段数据 save.Tables.Add(detail); //将<明细表>添加到数据集 } return save; } /// ///查询数据 /// public DataTable Query(QueryWOMDAA P) { return _DAL.Query(P); } /// ///获取报表数据 /// public DataSet QueryReportData(QueryWOMDAA P) { return _DAL.QueryReportData(P); } public DataTable GETDAT(string sql) { return _DAL.GetDataTable(sql); } } }