yl
2022-10-09 9eb6dc41797cbace32a65877067a9c9ac3154f7a
VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -138,19 +138,20 @@
                    }
                    if (i == Convert.ToInt32(ordernum))  //最后一单时
                    {
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = wo,
                                wotype="PO",
                                wotype = "PO",
                                status = "NEW",
                                wkshp_code = wkshopcode,
                                plan_qty = cdqty + (decimal.Parse(markqty) - sumqty),  //末单下单数量=切分数量+(下单数量-累计切分下单数量)
                                stck_code = warehousecode,
                                materiel_code = partcode,
                                sourceid = erporderid,
                                m_po = erpordercode,
                                username = username,
                                CreateDate = DateTime.Now.ToString()
@@ -161,7 +162,7 @@
                    else
                    {
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate)";
                        list.Add(new
                        {
                            str = sql,
@@ -174,6 +175,7 @@
                                plan_qty = cdqty,
                                stck_code = warehousecode,
                                materiel_code = partcode,
                                sourceid = erporderid,
                                m_po = erpordercode,
                                username = username,
                                CreateDate = DateTime.Now.ToString()
@@ -298,7 +300,7 @@
        #region[MES工单查询]
        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
@@ -356,8 +358,8 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.m_po,U.username as lm_user,A.lm_date
                var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date
                            from TK_Wrk_Man A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.org_code
@@ -475,7 +477,7 @@
        #endregion
        #region[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string mesorderstus,string sourceorder,string ordertype, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string sourceorder, string ordertype, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
@@ -621,7 +623,7 @@
        #endregion
        #region[MES工单删除]
        public static ToMessage DeleteMesOrder(string wocode, string m_po, string orderqty)
        public static ToMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -637,21 +639,22 @@
                    if (m_po != "" && m_po != null)
                    {
                        //查询生产订单表数据
                        sql = @"select *  from TKimp_Ewo where wo=@m_po";
                        sql = @"select *  from TKimp_Ewo where wo=@m_po and id=@souceid";
                        dynamicParams.Add("@m_po", m_po);
                        dynamicParams.Add("@souceid", souceid);
                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
                        decimal relse_qty = decimal.Parse(data0.Rows[0]["RELSE_QTY"].ToString());//以下单数量
                        if ((relse_qty - decimal.Parse(orderqty)) == 0)  //全部撤销 订单状态回写未开始,已下单数量为0
                        {
                            //回写订单表状态及已下单数量
                            sql = @"update TKimp_Ewo set status='NEW',relse_qty=0  where wo=@m_po";
                            list.Add(new { str = sql, parm = new { m_po = m_po } });
                            sql = @"update TKimp_Ewo set status='NEW',relse_qty=0  where wo=@m_po and id=@souceid";
                            list.Add(new { str = sql, parm = new { m_po = m_po, souceid = souceid } });
                        }
                        else
                        {
                            //回写订单表状态及已下单数量
                            sql = @"update TKimp_Ewo set status='CREATING',relse_qty=relse_qty-@orderqty  where wo=@m_po";
                            list.Add(new { str = sql, parm = new { m_po = m_po, orderqty = decimal.Parse(orderqty) } });
                            sql = @"update TKimp_Ewo set status='CREATING',relse_qty=relse_qty-@orderqty  where wo=@m_po and id=@souceid";
                            list.Add(new { str = sql, parm = new { m_po = m_po, souceid = souceid, orderqty = decimal.Parse(orderqty) } });
                        }
                    }
                    //删除工单工序表
@@ -697,7 +700,7 @@
        #endregion
        #region[MES工单关闭]
        public static ToMessage ClosedMesOrder(string wocode, string m_po)
        public static ToMessage ClosedMesOrder(string username, string wocode, string m_po)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -708,8 +711,8 @@
                sql = @"update TK_Wrk_Step set status='CLOSED'  where wo_code=@wocode";
                list.Add(new { str = sql, parm = new { wocode = wocode } });
                //回写工单表状态为(关闭)
                sql = @"update TK_Wrk_Man set status='CLOSED'  where wo_code=@wocode";
                list.Add(new { str = sql, parm = new { wocode = wocode } });
                sql = @"update TK_Wrk_Man set status='CLOSED',closeuser=@username,closedate=@closedate  where wo_code=@wocode";
                list.Add(new { str = sql, parm = new { wocode = wocode, username = username, closedate = DateTime.Now.ToString() } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
@@ -1143,7 +1146,7 @@
                    }
                    if (isend == "Y")  //当前工序是末道工序
                    {
                        rt.nextstepcode ="";//赋空
                        rt.nextstepcode = "";//赋空
                        rt.nextstepname = "";//赋空
                    }
                }
@@ -1364,7 +1367,7 @@
                    dynamicParams.Add("@usercode", usercode);
                }
                //班组获取人员列表
                sql = @"select usercode,username  from TUser where is_delete<>'1' " + search;
                sql = @"select usercode,username  from TUser where is_delete<>'1' and usercode<>'9999'" + search;
                dynamicParams.Add("@usercode", usercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
@@ -1551,7 +1554,7 @@
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode,string remarks, string username)
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string remarks, string username)
        {
            var sql = "";
            string[] arra = new string[] { };
@@ -1615,7 +1618,7 @@
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i],remarks=remarks,style = "B", lm_user = username, lm_date = date } });
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
                        }
                    }
@@ -1668,7 +1671,7 @@
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "B", lm_user = username, lm_date = date } });
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
                        }
                    }
@@ -1788,7 +1791,7 @@
        #endregion
        #region[生产开报工, 收料提交]
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode,string remarks, string username)
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string remarks, string username)
        {
            var sql = "";
            string[] arra1 = new string[] { };
@@ -1819,7 +1822,7 @@
                dynamicParams.Add("@step_code", stepcode);
                dynamicParams.Add("@wx_code", wxcode);
                var da = DapperHelper.selectdata(sql, dynamicParams);
                if (da.Rows.Count<=0)
                if (da.Rows.Count <= 0)
                {
                    sql = @"select A.wx_code,B.name,A.fqty   from TK_Wrk_OutRecord A
                        inner join TCustomer B on A.wx_code=B.code
@@ -1827,11 +1830,11 @@
                    dynamicParams.Add("@wo_code", mesordercode);
                    dynamicParams.Add("@step_code", stepcode);
                    var da1 = DapperHelper.selectdata(sql, dynamicParams);
                    var dr = da1.AsEnumerable().ToList().Select(x => x.Field<int>("NAME")).ToList();
                    var dr = da1.AsEnumerable().ToList().Select(x => x.Field<string>("NAME")).ToList();
                    string wxstring = (string.Join(",", dr.Select(x => x.ToString()).ToArray()));
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败,当前收料外协供方与发料外协供应商不匹配,应为:【"+wxstring+"】!";
                    mes.Message = "操作失败,当前收料外协供方与发料外协供应商不匹配,应为:【" + wxstring + "】!";
                    mes.data = null;
                    return mes;
                }
@@ -1839,7 +1842,7 @@
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败,当前收料数量+不良数量,不能大于发料数量:"+da.Rows[0]["FQTY"].ToString()+"!";
                    mes.Message = "操作失败,当前收料数量+不良数量,不能大于发料数量:" + da.Rows[0]["FQTY"].ToString() + "!";
                    mes.data = null;
                    return mes;
                }
@@ -1853,6 +1856,18 @@
                //}
                if (data.Rows.Count > 0)
                {
                    decimal sum_sqty = data.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum();  //获取同单号,同工序,同外协供应商收料总数量
                    decimal sum_fqty = da.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();  //获取同单号,同工序,同外协供应商发料总数量
                    if ((sum_sqty + decimal.Parse(sqty) + decimal.Parse(ngqty)) > sum_fqty) //已收料总数+当前收料数量+不良数量>总发料数量
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "操作失败,当前收料数量+不良数量,不能大于待收数量:" + (sum_fqty - sum_sqty) + "!";
                        mes.data = null;
                        return mes;
                    }
                    //获取主表最大ID
                    sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_OutRecord')+1,1) as id";
                    var dt = DapperHelper.selecttable(sql);
@@ -1873,7 +1888,7 @@
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
                        }
                    }
@@ -1922,7 +1937,7 @@
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
                        }
                    }
@@ -2257,7 +2272,7 @@
        #endregion
        #region[生产开报工,工序检验提交保存]
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr,string checkqty, string username, List<StepCheck> json)
        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr, string checkqty, string username, List<StepCheck> json)
        {
            var sql = "";
            string[] arra = new string[] { };
@@ -2287,7 +2302,7 @@
                //写入工序检验记录主表
                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,check_result,check_descr,check_qty,lm_user,lm_date) 
                                values(@mesordercode,@partcode,@stepcode,@checkstanedcode,@checkusercode,@checktypecode,@checktypename,@checkresult,@checkdescr,@check_qty,@lm_user,@lm_date)";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checktypename = checktypename, checkresult = checkresult, checkdescr = checkdescr, check_qty=checkqty, lm_user = username, lm_date = date } });
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checktypename = checktypename, checkresult = checkresult, checkdescr = checkdescr, check_qty = checkqty, lm_user = username, lm_date = date } });
                //写入工序检验记录子表
                //获取主表最大ID
                sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+1,1) as id";
@@ -2327,5 +2342,596 @@
        }
        #endregion
        #region[MES工单批量关闭查询]
        public static ToMessage MesOrderBitchClosedSearch(string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (mesorderstus != "" && mesorderstus != null)
                {
                    search += "and A.status=@mesorderstus ";
                    dynamicParams.Add("@mesorderstus", mesorderstus);
                }
                if (mesordercode != "" && mesordercode != null)
                {
                    search += "and A.wo_code like '%'+@mesordercode+'%' ";
                    dynamicParams.Add("@mesordercode", mesordercode);
                }
                if (sourceorder != "" && sourceorder != null)
                {
                    search += "and A.m_po like '%'+@sourceorder+'%' ";
                    dynamicParams.Add("@sourceorder", sourceorder);
                }
                if (ordertype != "" && ordertype != null)
                {
                    search += "and A.wotype like '%'+@ordertype+'%' ";
                    dynamicParams.Add("@ordertype", ordertype);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.materiel_code like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and B.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and B.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (createdate != "" && createdate != null)
                {
                    search += "and CONVERT(varchar(100),A.lm_date,23)=@createdate ";
                    dynamicParams.Add("@createdate", createdate);
                }
                if (creatuser != "" && creatuser != null)
                {
                    search += "and U.username like '%'+@creatuser+'%' ";
                    dynamicParams.Add("@creatuser", creatuser);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date
                            ,(select sum(S.good_qty)  from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as good_qty
                            ,(select sum(S.ng_qty)  from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as ng_qty
                            ,(select sum(S.bad_qty)  from TK_Wrk_Step S where S.wo_code=A.wo_code and S.isend='Y') as bad_qty
                            from TK_Wrk_Man A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.org_code
                            left join T_Sec_Stck D on A.stck_code=D.code
                            left join TFlw_Rout E on A.route_code=E.code
                            left join T_Sec_Stck F on A.stck_code=F.code
                            left join TUser U on A.lm_user=U.usercode
                            where A.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单批量关闭提交]
        public static ToMessage MesOrderBitchClosedSeave(string username, DataTable dt)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //关闭工单对应工序任务
                    sql = @"update TK_Wrk_Step set status='CLOSED'  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString() } });
                    //回写工单表状态为(关闭)
                    sql = @"update TK_Wrk_Man set status='CLOSED',closeuser=@username,closedate=@closedate  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString(), username = username, closedate = DateTime.Now.ToString() } });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "工单关闭成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工单关闭失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单批量反关闭]
        public static ToMessage MesOrderBitchAntiClosedSeave(string username, DataTable dt)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //关闭工单对应工序任务
                    sql = @"update TK_Wrk_Step set status='START'  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString() } });
                    //回写工单表状态为(关闭)
                    sql = @"update TK_Wrk_Man set status='START',closeuser=@username,closedate=@closedate  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString(), username = username, closedate = DateTime.Now.ToString() } });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "工单关闭成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工单关闭失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[产能规划查询]
        public static ToMessage CapacityPlanningSearch(string workshop, string devicetype, string stustype, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (workshop != "" && workshop != null)
                {
                    search += "and A.wksp_code=@workshop ";
                    dynamicParams.Add("@workshop", workshop);
                }
                if (devicetype != "" && devicetype != null)
                {
                    search += "and A.code=@devicetype ";
                    dynamicParams.Add("@devicetype", devicetype);
                }
                if (stustype != "" && stustype != null)
                {
                    search += "and B.enable=@stustype ";
                    dynamicParams.Add("@stustype", stustype);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select
                            B.id             CaptPlanId,
                            A.wksp_code      CaptPlanWorkShopid,
                            C.org_name       CaptPlanWorkShop,
                            A.code           CaptPlanDeviceTypeid,
                            A.name           CaptPlanDeviceType,
                            A.ClassType      CaptPlanType,
                            E.aa             CaptPlanShopCalendar,
                            E.RR             CaptPlanShopMaxDate,
                            E.TT             CaptPlanShopCalendarList,
                            B.wkshift_code   CaptPlanWorkShiftCode,
                            D.name           CaptPlanWorkShift,
                            D.duration       CaptPlanDuration,
                            B.lm_date        CaptPlanDate,
                            B.ENABLE         CaptPlanStus,
                            G.username       CaptPlanUser
                            FROM(
                            select distinct B.wksp_code,A.code,A.name,'D' ClassType   from TEqpType A
                            left join TEqpInfo B on A.code=B.eqptype_code
                            left join TFlw_Rteqp C on B.code=C.eqp_code
                            left join TFlw_Rtdt  D on C.step_code=D.step_code
                            where D.first_choke='Y'  --order by A.code
                            )A
                            left join TOrganization C on A.wksp_code=C.org_code
                            left join TWkm_capac_plan B ON A.wksp_code=B.wkshop and A.code=B.eqp_typecode
                            left join TBas_wkshift_info D on B.wkshift_code=D.code
                            left join TUser  G   on B.lm_user=G.usercode
                            left join (
                               select m_id,
                               min(CONVERT(varchar(100), wkdate, 23))+'~'+max(CONVERT(varchar(100), wkdate, 23)) aa,
                               max(CONVERT(varchar(100), wkdate, 23))RR,
                               STUFF((
                                    SELECT ',' + CONVERT(varchar(100),t1.wkdate, 23)
                                      FROM TWkm_capac_plan_sub t1
                                      WHERE t1.m_id = t0.m_id
                                      ORDER BY t1.m_id
                                      FOR XML PATH('')), 1, LEN(','), '') AS TT
                                      FROM TWkm_capac_plan_sub t0 where CONVERT(varchar(100), wkdate, 23)>=CONVERT(varchar(100),getdate(), 23)
                                      GROUP BY t0.m_id
                             ) E on B.id=E.m_id
                            where C.description='W' ";
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[产能规划默认方案保存提交]
        public static ToMessage CapacityPlanSubmit(string type, string captplanid, string wkshopcode, string capunitcode, string capsetupcode, string captplantype, string username)
        {
            var dynamicParams = new DynamicParameters();
            try
            {
                if (type == "Add")
                {
                    var sql = @"insert into TWkm_capac_plan(wkshop, eqp_typecode, wkshift_code, enable, lm_user, lm_time,classtype)
                            values(@wkshop,@eqp_typecode,@wkshift_code,@enable,@lm_user,@lm_time,@classtype)";
                    dynamicParams.Add("@wkshop", wkshopcode);
                    dynamicParams.Add("@eqp_typecode", capunitcode);
                    dynamicParams.Add("@wkshift_code", capsetupcode);
                    dynamicParams.Add("@enable", "Y");
                    dynamicParams.Add("@lm_user", username);
                    dynamicParams.Add("@lm_time", DateTime.Now.ToString());
                    dynamicParams.Add("@classtype", captplantype);
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "新增操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "新增操作失败!";
                        mes.data = null;
                    }
                }
                if (type == "Update")
                {
                    var sql = @"update TWkm_capac_plan set wkshift_code=@wkshift_code,lm_user=@username,lm_date=@CreateDate where id=@captplanid";
                    dynamicParams.Add("@captplanid", captplanid);
                    dynamicParams.Add("@wkshift_code", capsetupcode);
                    dynamicParams.Add("@username", username);
                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "修改操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "修改操作失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[产能规划点击日历组件查找已关联的日期方案]
        public static ToMessage CapacityPlanningCalendar(string captplanid)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<CapaPlan> list = new List<CapaPlan>();
            try
            {
                sql = @"select CONVERT(varchar(100), wkdate, 23) DataTime,wkshift_code   from TWkm_capac_plan_sub where m_id=@captplanid";
                dynamicParams.Add("@captplanid", captplanid);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string DataTime = dt.Rows[i]["DataTime"].ToString();//日期
                    string key = dt.Rows[i]["wkshift_code"].ToString(); //方案编码
                    CapaPlan cmp = new CapaPlan();
                    cmp.name = DataTime;
                    cmp.key = key;
                    list.Add(cmp);
                }
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = list;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[产能规划日历双击时带出对应的方案]
        public static ToMessage CapacityPlanningOnclickSelect(string captplanid, string datetime)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<CapacityPlanSect> list = new List<CapacityPlanSect>();
            try
            {
                sql = @"select distinct AA.code,AA.name,(case  when AA.Stus is null then 'N' else 'Y' end) flag
                        from
                        (
                        select A.code,A.name,B.wkshift_code Stus  from TBas_wkshift_info A
                        left join TWkm_capac_plan_sub B on A.code= B.wkshift_code and B.m_id=@captplanid and CONVERT(varchar(100), wkdate, 23)=@datetime
                        ) AA  order by code";
                dynamicParams.Add("@captplanid", captplanid);
                dynamicParams.Add("@datetime", datetime);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string code = dt.Rows[i]["code"].ToString();//方案编码
                    string name = dt.Rows[i]["name"].ToString();//方案名称
                    string flag = dt.Rows[i]["flag"].ToString();   //选中方案标识
                    CapacityPlanSect cmp = new CapacityPlanSect();
                    cmp.CapCode = code;
                    cmp.CapName = name;
                    cmp.CapStus = flag;
                    cmp.list = new List<object>();
                    string sql1 = @"select wktme1_start,wktme2_start,wktme3_start,wktme4_start,wktme5_start  from TBas_wkshift_info where code=@code";
                    dynamicParams.Add("@code", code);
                    var db = DapperHelper.selectdata(sql, dynamicParams);
                    for (int j = 0; j < db.Columns.Count; j++) //时间段
                    {
                        if (db.Rows[0][j].ToString().Trim() != null && db.Rows[0][j].ToString().Trim() != "")
                        {
                            cmp.list.Add(db.Rows[0][j].ToString());
                        }
                    }
                    list.Add(cmp);
                }
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = list;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[产能规划工作日历选择提交]
        public static ToMessage CapacityPlanningGivePlanSubmit(string captplanid, string wkshopcode, string capunitcode, string capsetupcode, string captplantype, List<CapaPlan> objs, string type, string username)
        {
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                if (capsetupcode == "" || capsetupcode == null)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "默认方案选择不能为空!";
                    mes.data = null;
                    return mes;
                }
                if (objs.Count <= 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工作日历选择不能为空!";
                    mes.data = null;
                    return mes;
                }
                if (type == "Add")
                {
                    for (int i = 0; i < objs.Count; i++)
                    {
                        sql = @"insert into TWkm_capac_plan_sub(m_id, wkdate,wkshift_code)
                                     values(@m_id,@wkdate,@wkshift_code)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                m_id = captplanid,
                                wkdate = objs[i].name,
                                wkshift_code = objs[i].key
                            }
                        });
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "操作失败!";
                        mes.data = null;
                    }
                }
                if (type == "Update")
                {
                    //定义两个数组用来对比修改前后日期及方案的变化
                    List<CapaPlan> ids = new List<CapaPlan>();
                    List<CapaPlan> ids1 = new List<CapaPlan>();
                    for (int i = 0; i < objs.Count; i++)
                    {
                        ids.Add(objs[i]);
                    }
                    //根据id查找日历时间
                    string sql2 = @"select CONVERT(varchar(100), wkdate, 23) wkdate,wkshift_code  from TWkm_capac_plan_sub where m_id=@m_id";
                    dynamicParams.Add("@m_id", captplanid);
                    var dt2 = DapperHelper.selectdata(sql2, dynamicParams);
                    if (dt2.Rows.Count > 0)
                    {
                        for (int k = 0; k < dt2.Rows.Count; k++)
                        {
                            CapaPlan ids2 = new CapaPlan();
                            ids2.name = dt2.Rows[k]["wkdate"].ToString();
                            ids2.key = dt2.Rows[k]["wkshift_code"].ToString();
                            ids1.Add(ids2);
                        }
                    }
                    List<CapaPlan> list3 = ids.Except(ids1).ToList(); //表示ids中哪些值是ids1中所不存在的;
                    List<CapaPlan> list4 = ids1.Except(ids).ToList(); //表示ids1中哪些值是ids中所不存在的;
                    list4 = list3.Union(list4).ToList();
                    //查找关键工序设备、工位群组的所有设备
                    string sql3 = @"select *  from(
                                  select distinct A.code,A.name  from TEqpInfo A
                                  left join TFlw_Rteqp B on A.code=B.eqp_code
                                  left join TFlw_Rtdt D on B.step_code=D.step_code
                                  where A.wksp_code=@wkshopcode  and D.first_choke='Y'  order by A.code)";
                    dynamicParams.Add("@wkshopcode", wkshopcode);
                    var dt3 = DapperHelper.selectdata(sql3, dynamicParams);
                    if (list4.Count > 0)  //如果日期有变动
                    {
                        if (dt3.Rows.Count > 0)
                        {
                            for (int m = 0; m < list4.Count; m++)
                            {
                                for (int n = 0; n < dt3.Rows.Count; n++)
                                {
                                    string sql4 = @"select  A.wo_code,A.eqp_code,A.Time_Start,A.time_end,
                                                 (case  B.Status when 'SCHED' then '已排程' when 'ALLOC' then '已派发' when 'START' then '已开工' end ) status
                                                  from TK_Wrk_EqpAps  A
                                                  left join mes_tk_wrk_man B on A.wo_code=B.Wo_Code
                                                  left join gn_eqp_eqpinfo C on A.eqp_code=C.code
                                                  where TO_char(time_start,'YYYY-MM-DD')='" + list4[m].name + "' and A.eqp_code='" + dt3.Rows[n]["CODE"] + "' and B.isaps='Y' and B.status IN('SCHED','ALLOC','START')";
                                    DataTable dt4 = DBHelper.GetTable(sql4);
                                    if (dt4.Rows.Count > 0)
                                    {
                                        for (int g = 0; g < dt4.Rows.Count; g++)
                                        {
                                            json = new DWZJson()
                                            {
                                                statusCode = "300",
                                                message = "修改失败!,日期:" + dt4.Rows[g]["TIME_START"] + "有【" + dt4.Rows[g]["STATUS"] + "】工单:" + dt4.Rows[g]["WO_CODE"] + "",
                                            };
                                            return json;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    list.Add(@"update gn_wkm_capac_plan set wkshift_code='" + CapSetupCode + "',classtype='" + CaptPlanType + "', enable='Y',lm_user='" + lm_user + "',lm_time=sysdate  where id='" + CaptPlanId + "'");
                    list.Add(@"delete gn_wkm_capac_plan_sub where m_id='" + CaptPlanId + "'");
                    for (int i = 0; i < objs.Count; i++)
                    {
                        list.Add(@"insert into gn_wkm_capac_plan_sub(m_id, id, wkdate,wkshift_code)
                                     values('" + CaptPlanId + "',gn_wkm_capac_plan_sub_S.nextVal,to_date('" + objs[i].name + "','yyyy-MM-dd'),'" + objs[i].key + "')");
                    }
                    int count = DBHelper.Executesqltran(list, pt.ToArray());
                    if (count > 0)
                    {
                        json = new DWZJson()
                        {
                            statusCode = "200",
                            message = "修改成功!",
                        };
                    }
                    else
                    {
                        json = new DWZJson()
                        {
                            statusCode = "300",
                            message = "修改失败!",
                        };
                    }
                }
            }
            catch (Exception e)
            {
                json = new DWZJson()
                {
                    statusCode = "300",
                    message = e.Message,
                };
            }
            return mes;
        }
        #endregion
    }
}