VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -138,7 +138,7 @@
                    }
                    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,@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,
@@ -151,6 +151,7 @@
                                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,@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()
@@ -356,8 +358,8 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.status,A.wotype,A.m_po,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
@@ -485,8 +487,8 @@
                if (opertype == "Add")
                {
                    //写入工单表
                    sql = @"insert into TK_Wrk_Man(wo_code,wotype,m_po,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
                                values(@mesordercode,@wotype,@m_po,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                    sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
                                values(@mesordercode,@wotype,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                    list.Add(new
                    {
                        str = sql,
@@ -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)
                {
@@ -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";
@@ -1812,22 +1815,59 @@
                dynamicParams.Add("@wx_code", wxcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                //获取发料记录的默认选中的外协供应商与收料时的外协供应商做对比判断
                sql = @"select A.wx_code,B.name   from TK_Wrk_OutRecord A
                sql = @"select A.wx_code,B.name,A.fqty   from TK_Wrk_OutRecord A
                        inner join TCustomer B on A.wx_code=B.code
                        where A.wo_code=@wo_code and A.step_code=@step_code and A.style='F' ";
                        where A.wo_code=@wo_code and A.step_code=@step_code and wx_code=@wx_code and A.style='F' ";
                dynamicParams.Add("@wo_code", mesordercode);
                dynamicParams.Add("@step_code", stepcode);
                dynamicParams.Add("@wx_code", wxcode);
                var da = DapperHelper.selectdata(sql, dynamicParams);
                if (da.Rows[0]["WX_CODE"].ToString() != wxcode)
                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
                        where A.wo_code=@wo_code and A.step_code=@step_code and A.style='F' ";
                    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<string>("NAME")).ToList();
                    string wxstring = (string.Join(",", dr.Select(x => x.ToString()).ToArray()));
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败,当前收料外协供方应为:" + da.Rows[0]["NAME"].ToString() + "!";
                    mes.Message = "操作失败,当前收料外协供方与发料外协供应商不匹配,应为:【"+wxstring+"】!";
                    mes.data = null;
                    return mes;
                }
                if ((decimal.Parse(sqty) + decimal.Parse(ngqty)) > decimal.Parse(da.Rows[0]["FQTY"].ToString()))  //收料数量+不良数量>发料数量
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败,当前收料数量+不良数量,不能大于发料数量:"+da.Rows[0]["FQTY"].ToString()+"!";
                    mes.data = null;
                    return mes;
                }
                //if (da.Rows[0]["WX_CODE"].ToString() != wxcode)
                //{
                //    mes.code = "300";
                //    mes.count = 0;
                //    mes.Message = "操作失败,当前收料外协供方应为:" + da.Rows[0]["NAME"].ToString() + "!";
                //    mes.data = null;
                //    return mes;
                //}
                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);
@@ -2302,5 +2342,182 @@
        }
        #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
    }
}