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);
}
}
}