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
|
{
|
/// <summary>
|
/// 业务逻辑层:bllWOMDAA
|
/// </summary>
|
public class bllWOMDAA : bllBaseBusiness
|
{
|
private dalWOMDAA _DAL = null;
|
|
/// <summary>
|
/// 构造器
|
/// </summary>
|
public bllWOMDAA()
|
{
|
_KeyFieldName = WOMDAA.__KeyName; //主键字段
|
_SummaryTableName = WOMDAA.__TableName; //表名
|
_WriteDataLog = false; //保存数据修改日志
|
_CurrentAppNAME = "排产报工";
|
_DAL = new dalWOMDAA(Loginer.CurrentUser); //实例化DAL层
|
}
|
|
/// <summary>
|
///根据单据号码取业务数据
|
/// </summary>
|
public override DataSet GetDataByKey(string keyValue, bool resetCurrent)
|
{
|
var ds = _DAL.GetDataByKey(keyValue);
|
SetNumericDefaultValue(ds); //设置预设值
|
if (resetCurrent) _CurrentBusiness = ds; //保存当前业务数据的对象引用
|
return ds;
|
}
|
|
/// <summary>
|
///删除单据
|
/// </summary>
|
public override bool Delete(string keyValue)
|
{
|
return _DAL.Delete(keyValue);
|
}
|
|
/// <summary>
|
///检查单号是否存在
|
/// </summary>
|
public bool CheckNoExists(string keyValue)
|
{
|
return _DAL.CheckNoExists(keyValue);
|
}
|
|
/// <summary>
|
///保存数据
|
/// </summary>
|
public override SaveResult Update(DataSet saveData)
|
{
|
return _DAL.Update(saveData); //交给数据层处理
|
}
|
|
/// <summary>
|
///审核单据
|
/// </summary>
|
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;
|
}
|
|
/// <summary>
|
///反审核单据。
|
/// </summary>
|
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;
|
}
|
}
|
|
/// <summary>
|
///新增一张业务单据
|
/// </summary>
|
public override void NewBusiness()
|
{
|
var summaryTable =
|
_CurrentBusiness.Tables[WOMDAA.__TableName];
|
var row = summaryTable.Rows.Add();
|
|
//新增状态:主表记录设置初始值
|
row[WOMDAA.__KeyName] = Guid.NewGuid();
|
}
|
|
/// <summary>
|
///创建用于保存的临时数据
|
/// </summary>
|
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<Models.Order>()
|
.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<Models.Order>()
|
.Where(x => x.Daa022 == daa022 && x.Daa042 == daa042)
|
.Single();
|
|
if (single != null)
|
if (single.Daa001 != s)
|
{
|
var count = db.Queryable<Models.Order>()
|
.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<Models.Order>()
|
.SetColumns(order => order.ISOk == 0)
|
.Where(order => order.id == id).ExecuteCommand();
|
});
|
}
|
else
|
{
|
//报工后反写已完成数
|
//报工数等于工单数时自动更改为已完工的状态
|
|
var pid = detail.Rows[0]["pid"].ToString();
|
|
|
var single = db.Queryable<Models.Order>()
|
.Where(s1 => s1.id == pid).Single();
|
|
var sum = db.Queryable<SqlDaa01>()
|
.Where(daa01 => daa01.pid == pid).Sum<int>(d => d.ISOK);
|
|
var i = detail.AsEnumerable()
|
.Sum(r => r.Field<int>("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<Models.Order>()
|
.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;
|
}
|
|
/// <summary>
|
///查询数据
|
/// </summary>
|
public DataTable Query(QueryWOMDAA P)
|
{
|
return _DAL.Query(P);
|
}
|
|
/// <summary>
|
///获取报表数据
|
/// </summary>
|
public DataSet QueryReportData(QueryWOMDAA P)
|
{
|
return _DAL.QueryReportData(P);
|
}
|
|
public DataTable GETDAT(string sql)
|
{
|
return _DAL.GetDataTable(sql);
|
}
|
}
|
}
|