using Dapper;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Web;
|
|
namespace VueWebApi.Tools
|
{
|
public class AutosCloseOrder
|
{
|
public static string sql;
|
public static DynamicParameters dynamicParams = new DynamicParameters();
|
|
/// <summary>
|
/// 判断是否自动关单
|
/// </summary>
|
/// <param name="mesordercode">工单号</param>
|
/// <param name="partcode">产品编码</param>
|
/// <param name="stepseq">工序序号</param>
|
/// <param name="stepcode">工序编码</param>
|
/// <param name="reportqty">报工合格数量</param>
|
/// <param name="ngqty">报工不良数量</param>
|
/// <returns></returns>
|
public static List<object> AutosColseOrderReport(List<object> list, string mesordercode,string partcode, string stepseq, string stepcode, string reportqty, string ngqty)
|
{
|
//根据当前工单号查询任务单中末道工序编码及报工数量
|
sql = @"select seq,step_code,plan_qty,good_qty,ng_qty from TK_Wrk_Step
|
where wo_code=@wo_code and isend='Y'";
|
dynamicParams.Add("@wo_code", mesordercode);
|
var data = DapperHelper.selectdata(sql, dynamicParams);
|
if (data.Rows.Count > 0)
|
{
|
//获取末道工序当次累计报工数量
|
decimal sumreport_qty = decimal.Parse(reportqty) + decimal.Parse(data.Rows[0]["good_qty"].ToString());
|
//判断末道工序当次累计报工数量是否>=任务数量
|
if (sumreport_qty >= decimal.Parse(data.Rows[0]["plan_qty"].ToString()))
|
{
|
//关闭工序任务单
|
sql = @"update TK_Wrk_Step set status='CLOSED' where wo_code=@mesordercode";
|
list.Add(new { str = sql, parm = new { mesordercode = mesordercode} });
|
//关闭工单
|
sql = @"update TK_Wrk_Man set status='CLOSED' where wo_code=@mesordercode";
|
list.Add(new { str = sql, parm = new { mesordercode = mesordercode} });
|
|
//根据工单号、产品编码查询所属订单编号
|
sql = @"select sourceid,m_po from TK_Wrk_Man
|
where wo_code=@wo_code and materiel_code=@partcode";
|
dynamicParams.Add("@wo_code", mesordercode);
|
dynamicParams.Add("@partcode", partcode);
|
var data1 = DapperHelper.selectdata(sql, dynamicParams);
|
if (data1.Rows.Count > 0 && data1.Rows[0]["m_po"].ToString() != null)
|
{
|
//根据订单号查询非当前工单的所有工单数量及工单状态
|
sql = @"select plan_qty,status from TK_Wrk_Man
|
where m_po=@m_po and materiel_code=@partcode and wo_code<>@wo_code";
|
dynamicParams.Add("@m_po", data1.Rows[0]["m_po"].ToString());
|
dynamicParams.Add("@partcode", partcode);
|
dynamicParams.Add("@wo_code", mesordercode);
|
var data2 = DapperHelper.selectdata(sql, dynamicParams);
|
if (data2.Rows.Count > 0)
|
{
|
//获取非当前工单(同物料)任务总数+当前工单的任务数量
|
decimal sumplanqty = data2.AsEnumerable().Select(d => d.Field<decimal>("plan_qty")).Sum()+ decimal.Parse(data.Rows[0]["plan_qty"].ToString()); //任务总数
|
//判断非当前工单(同物料)单据状态是否全部为关闭状态
|
if (data2.AsEnumerable().Select(d => d.Field<string>("status")).Distinct().Count()==1)
|
{
|
//根据订单号、物料编码查询订单数量
|
sql = @"select isnull(qty,0) as qty from TKimp_Ewo
|
where wo=@m_po and materiel_code=@partcode and id=@sourceid";
|
dynamicParams.Add("@m_po", data1.Rows[0]["m_po"].ToString());
|
dynamicParams.Add("@partcode", partcode);
|
dynamicParams.Add("@sourceid", data1.Rows[0]["sourceid"].ToString());
|
var data3 = DapperHelper.selectdata(sql, dynamicParams);
|
if (decimal.Parse(data3.Rows[0]["qty"].ToString()) == sumplanqty)
|
{
|
//关闭订单
|
sql = @"update TKimp_Ewo set status='CLOSED' where wo=@mesordercode and materiel_code=@materiel_code and id=@sourceid";
|
list.Add(new { str = sql, parm = new { mesordercode = mesordercode, materiel_code = partcode, sourceid= data1.Rows[0]["sourceid"].ToString() } });
|
}
|
}
|
}
|
}
|
}
|
|
}
|
return list;
|
}
|
}
|
}
|