北鸣对接T+畅捷通,看板API
yl
2023-11-20 f84de3e390ddb9f637342f16e758da4cbef5216e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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;
        }
    }
}