yl
2024-03-29 9c634fd767aec36ef97c3a814bf7a29c67d20ee1
VueWebApi/DLL/DAL/ProductModelDAL.cs
@@ -27,7 +27,7 @@
            try
            {
                //获取设备类型数据
                sql = @"select code,name from T_Dict where dict_type='CHLX' ";
                sql = @"select code,name,iparent_id from T_Dict where dict_type='CHLX' ";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -421,12 +421,29 @@
        #endregion
        #region[存货档案查询]
        public static ToMessage InventoryFileSelect(string partcode, string partname, string partspec, string stocktypecode, string materialtypecode, string storehousecode, int startNum, int endNum, string prop, string order)
        public static ToMessage InventoryFileSelect(string stu_torgcode, string stu_torgtypecode, string partcode, string partname, string partspec, string stocktypecode, string materialtypecode, string storehousecode, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search0 = "";
            string search = "";
            string search1 = "";
            try
            {
                switch (stu_torgtypecode)
                {
                    case "":
                        break;
                    case "D":
                        search1 += "and L.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    case "W":
                        search1 += "and F.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    default:
                        break;
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.partcode like '%'+@partcode+'%' ";
@@ -444,7 +461,8 @@
                }
                if (stocktypecode != "" && stocktypecode != null)
                {
                    search += "and D.code=@stocktypecode ";
                    search0 += " where code = @stocktypecode";
                    search += " and   CTE.iparent_id<>'' and CTE.dict_type='CHLX'";
                    dynamicParams.Add("@stocktypecode", stocktypecode);
                }
                if (materialtypecode != "" && materialtypecode != null)
@@ -463,21 +481,80 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,
                            C.code as materialtypecode,C.name as materialtypename,A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,A.default_route,
                            A.lm_date,A.proute_id
                            from TMateriel_Info A
                            left join TUom B on A.uom_code=B.code
                            left join TMateriel_Type C on A.materieltype_code=C.code
                            left join T_Dict D on A.stocktype_code=D.code and D.dict_type='CHLX'
                            left join T_Sec_Stck T on A.stck_code=T.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);
                               //var sql = @"select A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,
                               //            C.code as materialtypecode,C.name as materialtypename,A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,
                               //            A.lm_date,(case when isnull(M.materiel_code,'')='' then 'N' else 'Y' end) as proute_id,A.is_batchno,A.is_fifo,A.is_incheck,A.is_outcheck
                               //            from TMateriel_Info A
                               //            left join TUom B on A.uom_code=B.code
                               //            left join TMateriel_Type C on A.materieltype_code=C.code
                               //            left join T_Dict D on A.stocktype_code=D.code and D.dict_type='CHLX'
                               //            left join T_Sec_Stck T on A.stck_code=T.code
                               //            left join TUser U on A.lm_user=U.usercode
                               //            left join (
                               //               select distinct materiel_code from TMateriel_Route M
                               //               left join TOrganization F on M.torg_code=F.org_code
                               //               left join TOrganization as L on F.parent_id=L.id
                               //               where  1=1 "+search1+")  M on A.partcode=M.materiel_code where A.is_delete<>'1' " + search;
                var sql0 = @"WITH CTE AS (
                        SELECT  code,name,iparent_id,dict_type
                        FROM T_Dict " + search0 + " ";
                sql0 += @"UNION ALL
                        SELECT t.code,t.name,t.iparent_id,t.dict_type
                        FROM T_Dict t
                        INNER JOIN CTE c ON c.code = t.iparent_id)
                        SELECT COUNT(1) as total FROM (
                        SELECT distinct A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,D.iparent_id,
                            A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,
                            A.lm_date,(case when isnull(M.materiel_code,'')='' then 'N' else 'Y' end) as proute_id,A.is_batchno,A.is_fifo,A.is_incheck,A.is_outcheck
                  FROM CTE
                  right join TMateriel_Info A on CTE.code=A.stocktype_code
                  left join TUom B on A.uom_code=B.code
                        left join T_Dict D on A.stocktype_code=D.code
                        left join T_Sec_Stck T on A.stck_code=T.code
                        left join TUser U on A.lm_user=U.usercode
                        left join (
                               select distinct materiel_code from TMateriel_Route M
                               left join TOrganization F on M.torg_code=F.org_code
                               left join TOrganization as L on F.parent_id=L.id
                               where 1=1 " + search1 + ")  M on A.partcode=M.materiel_code  where  A.is_delete<>'1' " + search + ") AS Result";
                var data0 = DapperHelper.selectdata(sql0, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    total = Convert.ToInt32(data0.Rows[0]["total"].ToString());
                }
                else
                {
                    total = 0;
                }
                var sql = @"WITH CTE AS (
                        SELECT  code,name,iparent_id,dict_type
                        FROM T_Dict " + search0 + " ";
                sql += @"UNION ALL
                        SELECT t.code,t.name,t.iparent_id,t.dict_type
                        FROM T_Dict t
                        INNER JOIN CTE c ON c.code = t.iparent_id)
                        SELECT * FROM(SELECT *,ROW_NUMBER() OVER(ORDER BY lm_date desc) AS RowNum
                        FROM(
                        SELECT distinct A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,D.iparent_id,
                            A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,
                            A.lm_date,(case when isnull(M.materiel_code,'')='' then 'N' else 'Y' end) as proute_id,A.is_batchno,A.is_fifo,A.is_incheck,A.is_outcheck
                  FROM CTE
                  right join TMateriel_Info A on CTE.code=A.stocktype_code
                  left join TUom B on A.uom_code=B.code
                        left join T_Dict D on A.stocktype_code=D.code
                        left join T_Sec_Stck T on A.stck_code=T.code
                        left join TUser U on A.lm_user=U.usercode
                        left join (
                               select distinct materiel_code from TMateriel_Route M
                               left join TOrganization F on M.torg_code=F.org_code
                               left join TOrganization as L on F.parent_id=L.id
                               where 1=1 " + search1 + ")  M on A.partcode=M.materiel_code  where  A.is_delete<>'1' " + search + " ) AS Temp) AS Result WHERE RowNum >= " + startNum + " AND RowNum <=" + endNum + " ORDER BY " + prop + " " + order + "";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
                mes.data = data;
            }
            catch (Exception e)
            {
@@ -491,7 +568,7 @@
        #endregion
        #region[存货档案新增编辑]
        public static ToMessage AddUpdateInventoryFile(string materialid, string materialcode, string materialname, string materialspec, string uomcode, string warehousecode, string stocktypecode, string materialtypecode, string minstockqty, string maxstockqty, string username, string operType)
        public static ToMessage AddUpdateInventoryFile(string materialid, string materialcode, string materialname, string materialspec, string uomcode, string warehousecode, string stocktypecode, string minstockqty, string maxstockqty, string is_batchno, string is_fifo, string is_incheck, string is_outcheck, string username, string operType)
        {
            var dynamicParams = new DynamicParameters();
            try
@@ -509,19 +586,23 @@
                        mes.data = null;
                        return mes;
                    }
                    var sql = @"insert into TMateriel_Info(partcode,partname,partspec,uom_code,stocktype_code,materieltype_code,stck_code,maxqty,minqty,lm_user,lm_date)
                            values(@materialcode,@materialname,@materialspec,@uomcode,@stocktypecode,@materialtypecode,@warehousecode,@maxstockqty,@minstockqty,@username,@CreateDate)";
                    var sql = @"insert into TMateriel_Info(partcode,partname,partspec,uom_code,stocktype_code,materieltype_code,stck_code,maxqty,minqty,lm_user,lm_date,is_batchno,is_fifo,is_incheck,is_outcheck)
                            values(@materialcode,@materialname,@materialspec,@uomcode,@stocktypecode,@materialtypecode,@warehousecode,@maxstockqty,@minstockqty,@username,@CreateDate,@is_batchno,@is_fifo,@is_incheck,@is_outcheck)";
                    dynamicParams.Add("@materialcode", materialcode);
                    dynamicParams.Add("@materialname", materialname);
                    dynamicParams.Add("@materialspec", materialspec);
                    dynamicParams.Add("@uomcode", uomcode);
                    dynamicParams.Add("@warehousecode", warehousecode);
                    dynamicParams.Add("@stocktypecode", stocktypecode);
                    dynamicParams.Add("@materialtypecode", materialtypecode);
                    dynamicParams.Add("@materialtypecode", "");
                    dynamicParams.Add("@minstockqty", minstockqty);
                    dynamicParams.Add("@maxstockqty", maxstockqty);
                    dynamicParams.Add("@username", username);
                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
                    dynamicParams.Add("@is_batchno", is_batchno);
                    dynamicParams.Add("@is_fifo", is_fifo);
                    dynamicParams.Add("@is_incheck", is_incheck);
                    dynamicParams.Add("@is_outcheck", is_outcheck);
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    {
@@ -541,18 +622,23 @@
                if (operType == "Update")
                {
                    var sql = @"update TMateriel_Info set partname=@materialname,partspec=@materialspec,uom_code=@uomcode,stocktype_code=@stocktypecode,materieltype_code=@materialtypecode,stck_code=@warehousecode,
                                maxqty=@maxstockqty,minqty=@minstockqty,lm_user=@username,lm_date=@CreateDate where id=@materialid";
                                maxqty=@maxstockqty,minqty=@minstockqty,lm_user=@username,lm_date=@CreateDate,is_batchno=@is_batchno,is_fifo=@is_fifo,
                                is_incheck=@is_incheck,is_outcheck=@is_outcheck where id=@materialid";
                    dynamicParams.Add("@materialid", materialid);
                    dynamicParams.Add("@materialname", materialname);
                    dynamicParams.Add("@materialspec", materialspec);
                    dynamicParams.Add("@uomcode", uomcode);
                    dynamicParams.Add("@warehousecode", warehousecode);
                    dynamicParams.Add("@stocktypecode", stocktypecode);
                    dynamicParams.Add("@materialtypecode", materialtypecode);
                    dynamicParams.Add("@materialtypecode", "");
                    dynamicParams.Add("@minstockqty", minstockqty);
                    dynamicParams.Add("@maxstockqty", maxstockqty);
                    dynamicParams.Add("@username", username);
                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
                    dynamicParams.Add("@is_batchno", is_batchno);
                    dynamicParams.Add("@is_fifo", is_fifo);
                    dynamicParams.Add("@is_incheck", is_incheck);
                    dynamicParams.Add("@is_outcheck", is_outcheck);
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    {
@@ -645,6 +731,18 @@
                }
                //当前物料是否生成出入库记录
                //有没有被工单引用
                sql = @"select *  from TK_Wrk_Man
                        where materiel_code=@materialcode";
                dynamicParams.Add("@materialcode", materialcode);
                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                if (data2.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "物料已有关联的生产工单,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                //删除物料
                sql = @"delete TMateriel_Info  where partcode=@materialcode";
@@ -677,20 +775,38 @@
        #endregion
        #region[存货档案关联工艺路线查询]
        public static ToMessage InventoryFileAssociationRoute(string partcode)
        public static ToMessage InventoryFileAssociationRoute(string stu_torgcode, string stu_torgtypecode, string partcode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            List<MaterialRout> list = new List<MaterialRout>();
            try
            {
                switch (stu_torgtypecode)
                {
                    case "":
                        break;
                    case "D":
                        search += "and parent.org_code=@stu_torgcode or child.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    case "W":
                        search += "and parent.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    default:
                        break;
                }
                //获取工艺路线集合(包含物料绑定工艺路线标识)
                sql = @"select distinct A.code as routecode,A.name as routename,(case when B.route_code is null then 'N' else 'Y' end) flag  from TFlw_Rout A
                sql = @"select distinct parent.org_code,parent.org_name,A.code as routecode,A.name as routename,(case when B.route_code is null then 'N' else 'Y' end) flag  from TFlw_Rout A
                        left join TOrganization parent on A.torg_code=parent.org_code
                        left join TOrganization as child on parent.parent_id=child.id
                        left join (
                          select distinct route_code  from TMateriel_Route where  materiel_code=@partcode and is_delete<>'1'
                        ) B
                        on A.code=B.route_code 
                        where  A.is_delete='0' and A.enable='Y'";
                        where  A.is_delete='0' and A.enable='Y' " + search;
                dynamicParams.Add("@partcode", partcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
@@ -699,7 +815,8 @@
                    rout.code = data.Rows[i]["ROUTECODE"].ToString();
                    rout.name = data.Rows[i]["ROUTENAME"].ToString();
                    rout.flag = data.Rows[i]["FLAG"].ToString();
                    rout.wkshopcode = data.Rows[i]["ORG_CODE"].ToString();
                    rout.wkshopname = data.Rows[i]["ORG_NAME"].ToString();
                    //根据工艺路线编码获取关联的工序信息
                    sql = @"select A.seq,B.stepcode,B.stepname,B.enable from TFlw_Rtdt A
                            inner join TStep B on A.step_code=B.stepcode
@@ -726,31 +843,47 @@
        #endregion
        #region[存货档案关联工艺路线提交]
        public static ToMessage SaveInventoryFile(string partcode, string defaultroute_code, string username, List<ObjectData> json)
        public static ToMessage SaveInventoryFile(string stu_torgcode, string stu_torgtypecode, string partcode, string defaultroute_code, string username, List<PartRout> json)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            string search = "";
            List<object> list = new List<object>();
            try
            {
                list.Clear();
                if (json == null || json.Count <= 0)
                switch (stu_torgtypecode)
                {
                    //清除物料关联工艺路线表数据
                    sql = @"delete TMateriel_Route where materiel_code=@partcode";
                    list.Add(new { str = sql, parm = new { partcode = partcode } });
                    //标记物料表关联工艺路线标识
                    sql = @"update TMateriel_Info set proute_id='N',default_route='' where partcode=@partcode";
                    list.Add(new { str = sql, parm = new { partcode = partcode } });
                    case "":
                        //清除物料关联工艺路线表数据
                        sql = @"delete TMateriel_Route where materiel_code=@partcode";
                        list.Add(new { str = sql, parm = new { partcode = partcode } });
                        break;
                    case "D":
                        //清除物料关联工艺路线表数据
                        sql = @"delete from TMateriel_Route where id in (select A.id   from TMateriel_Route A
                                    left join TOrganization T on A.torg_code=T.org_code
                                    left join TOrganization as L on T.parent_id=L.id
                                    where 1=1 and  A.materiel_code=@partcode and  L.org_code=@stu_torgcode)";
                        list.Add(new { str = sql, parm = new { partcode = partcode, stu_torgcode = stu_torgcode } });
                        break;
                    case "W":
                        //清除物料关联工艺路线表数据
                        sql = @"delete from TMateriel_Route where id in (select A.id   from TMateriel_Route A
                                    left join TOrganization T on A.torg_code=T.org_code
                                    left join TOrganization as L on T.parent_id=L.id
                                    where 1=1 and  A.materiel_code=@partcode and  T.org_code=@stu_torgcode)";
                        list.Add(new { str = sql, parm = new { partcode = partcode, stu_torgcode = stu_torgcode } });
                        break;
                }
                else
                if (json != null && json.Count > 0)
                {
                    //清除用户关联角色表数据
                    sql = @"delete TMateriel_Route where materiel_code=@partcode";
                    list.Add(new { str = sql, parm = new { partcode = partcode } });
                    //物料+组织查询节拍工价表中对应的所有工艺路线,然后根据传过来的做对比,再去删除节拍工价表
                    //循环写入用户关联角色表
                    for (int i = 0; i < json.Count; i++)
                    {
                        sql = @"insert into TMateriel_Route(materiel_code,route_code,lm_user,lm_date) values(@materiel_code,@route_code,@lm_user,@lm_date)";
                        sql = @"insert into TMateriel_Route(materiel_code,route_code,lm_user,lm_date,torg_code) values(@materiel_code,@route_code,@lm_user,@lm_date,@torg_code)";
                        list.Add(new
                        {
                            str = sql,
@@ -759,13 +892,11 @@
                                materiel_code = partcode,
                                route_code = json[i].code,
                                lm_user = username,
                                lm_date = DateTime.Now.ToString()
                                lm_date = DateTime.Now.ToString(),
                                torg_code = json[i].wkshopcode
                            }
                        });
                    }
                    //标记物料表关联工艺路线标识
                    sql = @"update TMateriel_Info set proute_id='Y',default_route=@defaultroute_code where partcode=@partcode";
                    list.Add(new { str = sql, parm = new { partcode = partcode, defaultroute_code = defaultroute_code } });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
@@ -898,7 +1029,7 @@
                    mes.Message = "获取版本号失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
@@ -925,8 +1056,8 @@
                    string sql0 = @"select ISNULL(IDENT_CURRENT('TBom_Main')+1,1) as id";
                    var dt = DapperHelper.selecttable(sql0);
                    //写入BOM主表
                    sql = @"insert into TBom_Main(materiel_code,quantity,status,version,lm_user,lm_date)
                            values(@materiel_code,@quantity,@status,@version,@username,@CreateDate)";
                    sql = @"insert into TBom_Main(materiel_code,quantity,status,version,lm_user,lm_date,startdate)
                            values(@materiel_code,@quantity,@status,@version,@username,@CreateDate,@startdate)";
                    list.Add(new
                    {
                        str = sql,
@@ -937,7 +1068,8 @@
                            status = status,
                            version = version,
                            username = username,
                            CreateDate = DateTime.Now.ToString()
                            CreateDate = DateTime.Now.ToString(),
                            startdate = startdate
                        }
                    });
                    //写入BOM子表
@@ -985,12 +1117,12 @@
                        str = sql,
                        parm = new
                        {
                            id = bomid,
                            bomid = bomid,
                            materiel_code = parentpartcode,
                            quantity = quantity,
                            status = status,
                            username = username,
                            CreateDate = DateTime.Now.ToString()
                            lm_user = username,
                            lm_date = DateTime.Now.ToString()
                        }
                    });
                    //删除BOM子表
@@ -1000,7 +1132,7 @@
                        str = sql,
                        parm = new
                        {
                            id = bomid
                            bomid = bomid
                        }
                    });
                    //写入BOM子表
@@ -1058,6 +1190,18 @@
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断物料类型是否有关联物料
                sql = @"select materiel_code from TK_Wrk_Man   where materiel_code in (select materiel_code from TBom_Main  where id=@bomid ) and bom_id=@bomid";
                dynamicParams.Add("@bomid", bomid);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前物料清单已被工单关联使用,不允许修改!";
                    mes.data = null;
                    return mes;
                }
                //获取Bom子表数据
                sql = @"select A.seq,B.partcode,B.partname,B.partspec,B.uom_code,T.name as uom_name,
                         A.base_quantity,A.loss_quantity,A.total_quantity,A.pn_type   
@@ -1142,12 +1286,31 @@
        #region[工艺路线查询]
        public static ToMessage RouteSearch(string routecode, string routename, string description, string createuser, int startNum, int endNum, string prop, string order)
        public static ToMessage RouteSearch(string stu_torgcode, string stu_torgtypecode, string WorkShop, string routecode, string routename, string description, string createuser, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (WorkShop != "" && WorkShop != null)
                {
                    search += "and A.torg_code=@workShop ";
                    dynamicParams.Add("@workShop", WorkShop);
                }
                else
                {
                    switch (stu_torgtypecode)
                    {
                        case "":
                            search += "and T.description=@description ";
                            dynamicParams.Add("@description", "W");
                            break;
                        case "D":
                            search += "and  L.org_code=@stu_torgcode ";
                            dynamicParams.Add("@stu_torgcode", stu_torgcode);
                            break;
                    }
                }
                if (routecode != "" && routecode != null)
                {
                    search += "and A.code like '%'+@routecode+'%' ";
@@ -1174,8 +1337,15 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id,A.code,A.name,A.description,A.enable,U.username as lm_user,A.lm_date  from TFlw_Rout A
                var sql = @"select A.id,T.org_code,T.org_name,A.code,A.name,A.description,A.enable,U.username as lm_user,A.lm_date,
                            ISNULL(STUFF((SELECT ',' + R.materiel_code
                            FROM TMateriel_Route R
                            WHERE CHARINDEX(',' + R.route_code + ',', ',' + A.code + ',') > 0
                            FOR XML PATH('')), 1, 1, ''),'') AS isrolepart
                            from TFlw_Rout A
                            left join TUser U on A.lm_user=U.usercode
                            left join TOrganization T on A.torg_code=T.org_code
                            left join TOrganization as L on T.parent_id=L.id
                            where A.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
@@ -1203,7 +1373,7 @@
            try
            {
                //获取工艺路线信息
                sql = @"select code,name,description,enable
                sql = @"select code,name,description,enable,torg_code
                        from TFlw_Rout
                        where code=@routecode and is_delete<>'1'";
                dynamicParams.Add("@routecode", routecode);
@@ -1215,6 +1385,7 @@
                    rout.name = data.Rows[i]["NAME"].ToString();
                    rout.enable = data.Rows[i]["ENABLE"].ToString();
                    rout.description = data.Rows[i]["DESCRIPTION"].ToString();
                    rout.wkshopcode = data.Rows[i]["torg_code"].ToString();
                    //根据工艺路线编码获取关联的工序信息
                    sql = @"select A.seq,B.stepcode,B.stepname,B.enable from TFlw_Rtdt A
@@ -1263,8 +1434,8 @@
                        return mes;
                    }
                    //新增工艺路线表
                    sql = @"insert into TFlw_Rout(code,name,description,enable,lm_user,lm_date) values(@code,@name,@description,@enable,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { code = json.code, name = json.name, description = json.description, enable = json.enable, lm_user = username, lm_date = DateTime.Now.ToString() } });
                    sql = @"insert into TFlw_Rout(code,name,description,enable,lm_user,lm_date,torg_code) values(@code,@name,@description,@enable,@lm_user,@lm_date,@torg_code)";
                    list.Add(new { str = sql, parm = new { code = json.code, name = json.name, description = json.description, enable = json.enable, lm_user = username, lm_date = DateTime.Now.ToString(), torg_code = json.wkshopcode } });
                    for (int i = 0; i < json.Data.Rows.Count; i++)
                    {
                        string is_firststep = "N"; //是否首道工序
@@ -1273,13 +1444,13 @@
                        {
                            is_firststep = "Y";
                        }
                        else if (Convert.ToInt32(json.Data.Rows[i]["SEQ"].ToString()) == json.Data.Rows.Count) //是否末道工序
                        if (Convert.ToInt32(json.Data.Rows[i]["SEQ"].ToString()) == json.Data.Rows.Count) //是否末道工序
                        {
                            is_laststep = "Y";
                        }
                        //新增工艺路线关联工序表
                        sql = @"insert TFlw_Rtdt (rout_code,seq,step_code,first_choke,last_choke,lm_user,lm_date) values(@rout_code,@seq,@step_code,@first_choke,@last_choke,@lm_user,@lm_date)";
                        list.Add(new { str = sql, parm = new { rout_code = json.code, seq = Convert.ToInt32(json.Data.Rows[i]["SEQ"].ToString()), step_code = json.Data.Rows[i]["STEPCODE"].ToString(), first_choke = is_firststep, last_choke = is_laststep, lm_user = username, lm_date = DateTime.Now.ToString() } });
                        sql = @"insert TFlw_Rtdt (rout_code,seq,step_code,first_choke,last_choke,lm_user,lm_date,torg_code) values(@rout_code,@seq,@step_code,@first_choke,@last_choke,@lm_user,@lm_date,@torg_code)";
                        list.Add(new { str = sql, parm = new { rout_code = json.code, seq = Convert.ToInt32(json.Data.Rows[i]["SEQ"].ToString()), step_code = json.Data.Rows[i]["STEPCODE"].ToString(), first_choke = is_firststep, last_choke = is_laststep, lm_user = username, lm_date = DateTime.Now.ToString(), torg_code = json.wkshopcode } });
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
@@ -1317,6 +1488,18 @@
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断工艺路路线是否被存货绑定
                sql = @"select *   from TMateriel_Route where route_code=@routecode";
                dynamicParams.Add("@routecode", routecode);
                var data_0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data_0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "存货档案已关联工艺路线,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                //判断工艺路线是否被工单引用(被引用则不能删除)
                sql = @"select *   from TK_Wrk_Man where route_code=@routecode";
                dynamicParams.Add("@routecode", routecode);
@@ -1327,6 +1510,7 @@
                    mes.count = 0;
                    mes.Message = "工艺路线已被工单引用,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                else
                {
@@ -1340,6 +1524,7 @@
                        mes.count = 0;
                        mes.Message = "工艺路线已设置节拍工价,请先删除设置!";
                        mes.data = null;
                        return mes;
                    }
                    else
                    {
@@ -1353,20 +1538,214 @@
                        sql = @"delete TMateriel_Route  where route_code=@routecode";
                        list.Add(new { str = sql, parm = new { routecode = routecode } });
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "删除成功!";
                        mes.data = null;
                        return mes;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "删除失败!";
                        mes.data = null;
                        return mes;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
                return mes;
            }
            return mes;
        }
        #endregion
        #region[工艺路线关联产品查询]
        public static ToMessage RputeInventorySearch(string stu_torgcode, string stu_torgtypecode, string partcode, string partname, string partspec, string stocktypecode, string materialtypecode, string storehousecode)
        {
            var dynamicParams = new DynamicParameters();
            string search0 = "";
            string search = "";
            string search1 = "";
            try
            {
                switch (stu_torgtypecode)
                {
                    case "":
                        break;
                    case "D":
                        search1 += "and L.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    case "W":
                        search1 += "and F.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    default:
                        break;
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and A.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and A.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stocktypecode != "" && stocktypecode != null)
                {
                    search0 += " where code = @stocktypecode";
                    search += " and   CTE.iparent_id<>'' and CTE.dict_type='CHLX'";
                    dynamicParams.Add("@stocktypecode", stocktypecode);
                }
                if (materialtypecode != "" && materialtypecode != null)
                {
                    search += "and C.code=@materialtypecode ";
                    dynamicParams.Add("@materialtypecode", materialtypecode);
                }
                if (storehousecode != "" && storehousecode != null)
                {
                    search += "and A.stck_code=@storehousecode ";
                    dynamicParams.Add("@storehousecode", storehousecode);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql0 = @"WITH CTE AS (
                        SELECT  code,name,iparent_id,dict_type
                        FROM T_Dict " + search0 + " ";
                sql0 += @"UNION ALL
                        SELECT t.code,t.name,t.iparent_id,t.dict_type
                        FROM T_Dict t
                        INNER JOIN CTE c ON c.code = t.iparent_id)
                        SELECT COUNT(1) as total FROM (
                        SELECT distinct A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,D.iparent_id,
                            A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,
                            A.lm_date,(case when isnull(M.materiel_code,'')='' then 'N' else 'Y' end) as proute_id,A.is_batchno,A.is_fifo,A.is_incheck,A.is_outcheck
                  FROM CTE
                  right join TMateriel_Info A on CTE.code=A.stocktype_code
                  left join TUom B on A.uom_code=B.code
                        left join T_Dict D on A.stocktype_code=D.code
                        left join T_Sec_Stck T on A.stck_code=T.code
                        left join TUser U on A.lm_user=U.usercode
                        left join (
                               select distinct materiel_code from TMateriel_Route M
                               left join TOrganization F on M.torg_code=F.org_code
                               left join TOrganization as L on F.parent_id=L.id
                               where 1=1 " + search1 + ")  M on A.partcode=M.materiel_code  where  A.is_delete<>'1' " + search + ") AS Result";
                var data0 = DapperHelper.selectdata(sql0, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    total = Convert.ToInt32(data0.Rows[0]["total"].ToString());
                }
                else
                {
                    total = 0;
                }
                var sql = @"WITH CTE AS (
                        SELECT  code,name,iparent_id,dict_type
                        FROM T_Dict " + search0 + " ";
                sql += @"UNION ALL
                        SELECT t.code,t.name,t.iparent_id,t.dict_type
                        FROM T_Dict t
                        INNER JOIN CTE c ON c.code = t.iparent_id)
                        SELECT * FROM(SELECT *,ROW_NUMBER() OVER(ORDER BY lm_date desc) AS RowNum
                        FROM(
                        SELECT distinct A.id,A.partcode,A.partname,A.partspec,A.uom_code,B.name as uom_name,D.code as stocktypecode,D.name as stocktypename,D.iparent_id,
                            A.stck_code,T.name as stck_name,A.maxqty,A.minqty,U.username as lm_user,
                            A.lm_date,(case when isnull(M.materiel_code,'')='' then 'N' else 'Y' end) as proute_id,A.is_batchno,A.is_fifo,A.is_incheck,A.is_outcheck
                  FROM CTE
                  right join TMateriel_Info A on CTE.code=A.stocktype_code
                  left join TUom B on A.uom_code=B.code
                        left join T_Dict D on A.stocktype_code=D.code
                        left join T_Sec_Stck T on A.stck_code=T.code
                        left join TUser U on A.lm_user=U.usercode
                        left join (
                               select distinct materiel_code from TMateriel_Route M
                               left join TOrganization F on M.torg_code=F.org_code
                               left join TOrganization as L on F.parent_id=L.id
                               where 1=1 " + search1 + ")  M on A.partcode=M.materiel_code  where  A.is_delete<>'1' " + search + " ) AS Temp) AS Result";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[工艺路线批量指定物料保存]
        public static ToMessage RouteBatchPartSave(string stu_torgcode, string stu_torgtypecode, string username, string routecode, string[] rolebatchpartcode)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
            try
            {
                list.Clear();
                //清除工艺路线关联的物料数据
                sql = @"delete TMateriel_Route where route_code=@route_code";
                list.Add(new { str = sql, parm = new { route_code = routecode } });
                //循环写入工艺路线物料关联表
                for (int i = 0; i < rolebatchpartcode.Length; i++)
                {
                    sql = @"insert into TMateriel_Route(materiel_code,route_code,lm_user,lm_date,torg_code)
                            values(@materiel_code,@route_code,@lm_user,@lm_date,@torg_code)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            materiel_code = rolebatchpartcode[i].ToString(),
                            route_code = routecode,
                            lm_user = username,
                            lm_date = DateTime.Now.ToString(),
                            torg_code = stu_torgcode
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "删除成功!";
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "删除失败!";
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
@@ -1385,15 +1764,18 @@
        #region[工序下拉查询接口]
        public static ToMessage StepSelect()
        public static ToMessage StepSelect(string WorkShop)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取工序数据
                sql = @"select stepcode,stepname from TStep where is_delete<>'1' and enable='Y'";
                var data = DapperHelper.selecttable(sql);
                sql = @"select stepcode,stepname from TStep where is_delete<>'1' and enable='Y' and torg_code=@torg_code";
                dynamicParams.Add("@torg_code", WorkShop);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.count = data.Rows.Count;
                mes.Message = "查询成功!";
                mes.data = data;
            }
@@ -1409,12 +1791,31 @@
        #endregion
        #region[工序查询]
        public static ToMessage StepSearch(string stepcode, string stepname, string enable, string steptypecode, string createuser, int startNum, int endNum, string prop, string order)
        public static ToMessage StepSearch(string stu_torgcode, string stu_torgtypecode, string WorkShop, string stepcode, string stepname, string enable, string steptypecode, string createuser, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (WorkShop != "" && WorkShop != null)
                {
                    search += "and A.torg_code=@workShop ";
                    dynamicParams.Add("@workShop", WorkShop);
                }
                else
                {
                    switch (stu_torgtypecode)
                    {
                        case "":
                            search += "and T.description=@description ";
                            dynamicParams.Add("@description", "W");
                            break;
                        case "D":
                            search += "and  L.org_code=@stu_torgcode ";
                            dynamicParams.Add("@stu_torgcode", stu_torgcode);
                            break;
                    }
                }
                if (stepcode != "" && stepcode != null)
                {
                    search += "and A.stepcode like '%'+@stepcode+'%' ";
@@ -1446,8 +1847,10 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id,A.stepcode,A.stepname,A.flwtype,A.enable,A.descr,U.username as lm_user,A.lm_date,A.is_eqp,A.is_defect  from TStep A
                var sql = @"select A.id,T.org_code,T.org_name,A.stepcode,A.stepname,A.flwtype,A.enable,A.descr,U.username as lm_user,A.lm_date,A.is_eqp,A.is_defect  from TStep A
                            left join TUser U on A.lm_user=U.usercode
                            left join TOrganization T on A.torg_code=T.org_code
                            left join TOrganization as L on T.parent_id=L.id
                            where A.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
@@ -1467,7 +1870,7 @@
        #endregion
        #region[工序新增编辑]
        public static ToMessage AddUpdateStep(string stepid, string stepcode, string stepname, string steptypecode, string enable, string description, string username, string operType)
        public static ToMessage AddUpdateStep(string stepid, string WorkShop, string stepcode, string stepname, string steptypecode, string enable, string description, string username, string operType)
        {
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
@@ -1487,8 +1890,8 @@
                        mes.data = null;
                        return mes;
                    }
                    var sql = @"insert into TStep(stepcode,stepname,flwtype,enable,descr,lm_user,lm_date)
                            values(@stepcode,@stepname,@steptypecode,@enable,@description,@username,@CreateDate)";
                    var sql = @"insert into TStep(stepcode,stepname,flwtype,enable,descr,lm_user,lm_date,torg_code)
                            values(@stepcode,@stepname,@steptypecode,@enable,@description,@username,@CreateDate,@torg_code)";
                    dynamicParams.Add("@stepcode", stepcode);
                    dynamicParams.Add("@stepname", stepname);
                    dynamicParams.Add("@steptypecode", steptypecode);
@@ -1496,6 +1899,7 @@
                    dynamicParams.Add("@description", description);
                    dynamicParams.Add("@username", username);
                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
                    dynamicParams.Add("@torg_code", WorkShop);
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    {
@@ -1548,13 +1952,14 @@
                            //修改工序表关联工作站标识
                            sql_1 = @"update TStep set is_eqp='N' where stepcode=@stepcode";
                            list.Add(new { str = sql_1, parm = new { stepcode = stepcode } });
                            //删除设备节拍工价表
                            sql_1 = @"delete TPrteEqp_Stad  where step_code=@stepcode";
                            list.Add(new { str = sql_1, parm = new { stepcode = stepcode } });
                        }
                    }
                    sql_1 = @"update TStep set stepname=@stepname,flwtype=@steptypecode,enable=@enable,descr=@description,
                    sql_1 = @"update TStep set torg_code=@torg_code, stepname=@stepname,flwtype=@steptypecode,enable=@enable,descr=@description,
                                lm_user=@username,lm_date=@CreateDate where id=@stepid";
                    list.Add(new { str = sql_1, parm = new { stepid = stepid, stepname = stepname, steptypecode = steptypecode, enable = enable, description = description, username = username, CreateDate = DateTime.Now.ToString() } });
                    list.Add(new { str = sql_1, parm = new { torg_code = WorkShop, stepid = stepid, stepname = stepname, steptypecode = steptypecode, enable = enable, description = description, username = username, CreateDate = DateTime.Now.ToString() } });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
@@ -1616,7 +2021,7 @@
                sql = @"delete TDefect_Step  where step_code=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                //删除工序
                sql = @"update TStep set is_delete='1' where stepcode=@stepcode";
                sql = @"delete TStep  where stepcode=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
@@ -1646,7 +2051,7 @@
        #endregion
        #region[工序定义关联工作站查询]
        public static ToMessage StepAssociationEqp(string stepcode)
        public static ToMessage StepAssociationEqp(string WorkShop, string stepcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
@@ -1658,16 +2063,17 @@
                        left join(
                        select distinct A.eqp_code,B.wksp_code  from TFlw_Rteqp A 
                        inner join TEqpInfo B on A.eqp_code=B.code 
                        where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1'
                        ) B on T.org_code=B.wksp_code where T.description='W' and is_delete<>'1'
                        where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1' and B.enable='Y'
                        ) B on T.org_code=B.wksp_code where T.description='W' and is_delete<>'1' and T.org_code=@WorkShop
                        UNION ALL
                        select distinct T.btype as wksp_code,(case T.btype  when 'WX' then '外协供方' end ) as wksp_name,'W' as type,(case when B.btype is null then 'N' else 'Y' end) flag
                        select distinct T.type as wksp_code,(case when T.type='211' then '供应商' when T.type='228' then '客户/供应商' end ) as wksp_name,'W' as type,(case when B.type is null then 'N' else 'Y' end) flag
                        from TCustomer T
                        left join(
                        select distinct A.eqp_code,B.btype  from TFlw_Rteqp A
                        select distinct A.eqp_code,B.type  from TFlw_Rteqp A
                        inner join TCustomer B on A.eqp_code=B.code 
                        where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1'
                        ) B on T.btype=B.btype where T.btype='WX' and T.is_delete<>'1'";
                        where A.step_code=@stepcode  and A.is_delete<>'1' and B.is_delete<>'1'
                        ) B on T.type=B.type where T.type in('211','228') and T.is_delete<>'1'"; //226(客户)
                dynamicParams.Add("@WorkShop", WorkShop);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
@@ -1678,7 +2084,7 @@
                    rout.type = data.Rows[i]["TYPE"].ToString();
                    rout.flag = data.Rows[i]["FLAG"].ToString();
                    rout.children = new List<StepEqpCn>();
                    if (rout.code == "WX") //外协供方
                    if (rout.code == "211" || rout.code == "228") //外协供方
                    {
                        //根据外协供方标识编码查找外协供方信息(包含已关联标识)
                        sql = @"select A.code,A.name,'W' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
@@ -1686,8 +2092,9 @@
                                left join(
                                select distinct A.eqp_code  from TFlw_Rteqp A 
                                inner join TCustomer B on A.eqp_code=B.code 
                                where B.btype=@wxcode and A.is_delete<>'1' and B.is_delete<>'1'
                                ) B on A.code=B.eqp_code where A.btype=@wxcode and A.is_delete<>'1'";
                                where A.step_code=@stepcode and B.type=@wxcode and A.is_delete<>'1' and B.is_delete<>'1'
                                ) B on A.code=B.eqp_code where A.type=@wxcode and A.is_delete<>'1'";
                        dynamicParams.Add("@stepcode", stepcode);
                        dynamicParams.Add("@wxcode", rout.code);
                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
                        for (int k = 0; k < data0.Rows.Count; k++)
@@ -1709,7 +2116,7 @@
                              left join(
                              select distinct A.eqp_code  from TFlw_Rteqp A 
                              inner join TEqpInfo B on A.eqp_code=B.code 
                              where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1'
                              where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1' and B.enable='Y'
                              ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                        dynamicParams.Add("@stepcode", stepcode);
                        dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
@@ -1742,7 +2149,7 @@
        #endregion
        #region [工序定义关联工作站提交]
        public static ToMessage SaveStepAssociationEqp(string stepcode, string username, List<ObjectData> json)
        public static ToMessage SaveStepAssociationEqp(string WorkShop, string stepcode, string username, List<ObjectData> json)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -1757,16 +2164,23 @@
                    //标记工序表关联工作站标识
                    sql = @"update TStep set is_eqp='N' where stepcode=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                    //根据工序清除节拍工价表
                    sql = @"delete TPrteEqp_Stad where step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                }
                else
                {
                    //清除工序关联工作站表数据
                    sql = @"delete TFlw_Rteqp where step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                    //根据工序清除节拍工价表
                    sql = @"delete TPrteEqp_Stad where step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                    //循环写入用户关联角色表
                    for (int i = 0; i < json.Count; i++)
                    {
                        sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date) values(@eqp_code,@stepcode,@style,@lm_user,@lm_date)";
                        sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date,torg_code) values(@eqp_code,@stepcode,@style,@lm_user,@lm_date,@torg_code)";
                        list.Add(new
                        {
                            str = sql,
@@ -1776,7 +2190,8 @@
                                stepcode = stepcode,
                                style = json[i].name,
                                lm_user = username,
                                lm_date = DateTime.Now.ToString()
                                lm_date = DateTime.Now.ToString(),
                                torg_code = WorkShop
                            }
                        });
                    }
@@ -1812,19 +2227,24 @@
        #endregion
        #region[工序关联缺陷查询]
        public static ToMessage StepAssociationDefect(string stepcode)
        public static ToMessage StepAssociationDefect(string WorkShop, string stepcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<StepDefect> list = new List<StepDefect>();
            try
            {
                //获取工序关联缺陷数据(包含关联标识)
                sql = @"select A.code,A.name,(case when B.defect_code is null then 'N' else 'Y' end) flag from TDefect A
                        left join(
                        select distinct defect_code  from TDefect_Step where step_code=@stepcode and is_delete<>'1'
                        select distinct defect_code  from TDefect_Step A
                        left join TOrganization T on A.torg_code=T.org_code
                        left join TOrganization as L on T.parent_id=L.id
                        where step_code=@stepcode and A.is_delete<>'1' and T.org_code=@WorkShop
                        ) B on A.code=B.defect_code";
                dynamicParams.Add("@stepcode", stepcode);
                dynamicParams.Add("@WorkShop", WorkShop);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
                {
@@ -1850,7 +2270,7 @@
        #endregion
        #region[工序关联缺陷提交]
        public static ToMessage SaveStepAssociationDefect(string stepcode, string username, List<ObjectData> json)
        public static ToMessage SaveStepAssociationDefect(string WorkShop, string stepcode, string username, List<ObjectData> json)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -1874,7 +2294,7 @@
                    //循环写入用户关联角色表
                    for (int i = 0; i < json.Count; i++)
                    {
                        sql = @"insert into TDefect_Step(defect_code,step_code,lm_user,lm_date) values(@defect_code,@stepcode,@lm_user,@lm_date)";
                        sql = @"insert into TDefect_Step(defect_code,step_code,lm_user,lm_date,torg_code) values(@defect_code,@stepcode,@lm_user,@lm_date,@torg_code)";
                        list.Add(new
                        {
                            str = sql,
@@ -1883,7 +2303,8 @@
                                defect_code = json[i].code,
                                stepcode = stepcode,
                                lm_user = username,
                                lm_date = DateTime.Now.ToString()
                                lm_date = DateTime.Now.ToString(),
                                torg_code = WorkShop
                            }
                        });
                    }
@@ -1920,7 +2341,6 @@
        #region[产品信息下拉框查询]
        public static ToMessage PartSelect()
        {
@@ -1952,17 +2372,35 @@
        #endregion
        #region[产品编码查找工艺路线下拉框]
        public static ToMessage PartSelectRpute(string partcode)
        public static ToMessage PartSelectRpute(string stu_torgcode, string stu_torgtypecode, string partcode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                switch (stu_torgtypecode)
                {
                    case "":
                        break;
                    case "D":
                        search += "and L.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    case "W":
                        search += "and T.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    default:
                        break;
                }
                //通过产品编码查找关联的工艺路线信息
                sql = @"select A.route_code,B.name as route_name   
                        from TMateriel_Route A
                        inner join TFlw_Rout B on A.route_code=B.code 
                        where A.materiel_code=@partcode and B.is_delete<>'1' and A.is_delete<>'1'";
                        left join TOrganization T on A.torg_code=T.org_code
                        left join TOrganization as L on T.parent_id=L.id
                        where A.materiel_code=@partcode and B.is_delete<>'1' and A.is_delete<>'1' " + search;
                dynamicParams.Add("@partcode", partcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
@@ -1988,12 +2426,12 @@
            try
            {
                //通过产品编码查找关联的工艺路线信息
                sql = @"select B.stepcode as code,B.stepname as name
                sql = @"select B.stepcode as code,B.stepname as name,B.flwtype as flag
                        from TFlw_Rtdt A
                        inner join TStep B on A.step_code=B.stepcode
                        where A.rout_code=@routecode and B.is_delete<>'1' and A.is_delete<>'1'";
                dynamicParams.Add("@routecode", routecode);
                var data = DapperHelper.select<ObjectData>(sql, dynamicParams);
                var data = DapperHelper.select<StepDefect>(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
@@ -2038,29 +2476,81 @@
        #endregion
        #region[根据工序线编码查找关联设备集合]
        public static ToMessage StepSelectEqpList(string partcode, string routecode, string stepcode, int startNum, int endNum, string prop, string order)
        public static ToMessage StepSelectEqpList(string partcode, string routecode, string stepcode, string steptype, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            string search = "", sql = "";
            int total = 0;
            try
            {
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select B.code as eqpcode,B.name as eqpname,B.wksp_code,T.org_name as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                if (steptype == "Z")  //自制工序
                {
                    total = 0; //总条数
                    //sql = @"select B.code as eqpcode,B.name as eqpname,B.wksp_code,T.org_name as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                    //        from (
                    //        select materiel_code, eqp_code,eqp_value,stand_value,cavity_qty,unprice   from TPrteEqp_Stad
                    //        where materiel_code=@partcode  and route_code=@routecode and step_code=@stepcode
                    //        union all
                    //        select @partcode as materiel_code,eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice
                    //        from TFlw_Rteqp where step_code=@stepcode and style='E' and @partcode+eqp_code+step_code not in(select materiel_code+eqp_code+step_code  from TPrteEqp_Stad)
                    //        ) A
                    //        left join TEqpInfo B on A.eqp_code=B.code
                    //        left join TOrganization T on B.wksp_code=T.org_code
                    //        left join TMateriel_Info C on A.materiel_code=C.partcode
                    //        where B.is_delete<>'1' and  T.is_delete<>'1' and C.is_delete<>'1' ";
                    sql = @"select B.code as eqpcode,B.name as eqpname,B.wksp_code,T.org_name as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                            from (
                            select materiel_code, eqp_code,eqp_value,stand_value,cavity_qty,unprice   from TPrteEqp_Stad
                            where materiel_code=@partcode  and route_code=@routecode and step_code=@stepcode 
                            union all
                            select @partcode as materiel_code,eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice
                            from TFlw_Rteqp where step_code=@stepcode and style='E' and @partcode+eqp_code+step_code not in(select materiel_code+eqp_code+step_code  from TPrteEqp_Stad)
                            select @partcode as materiel_code,C.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice
                            from TFlw_Rout A
                            inner join TFlw_Rtdt B on A.code=B.rout_code
                            left join TFlw_Rteqp C on B.step_code=C.step_code
                            where A.code=@routecode and B.step_code=@stepcode and style='E' and @partcode+A.code+C.eqp_code+B.step_code
                            not in(select materiel_code+route_code+eqp_code+step_code  from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode)
                            ) A
                            left join TEqpInfo B on A.eqp_code=B.code 
                            left join TOrganization T on B.wksp_code=T.org_code 
                            left join TMateriel_Info C on A.materiel_code=C.partcode
                            where B.is_delete<>'1' and  T.is_delete<>'1' and C.is_delete<>'1' ";
                dynamicParams.Add("@partcode", partcode);
                dynamicParams.Add("@routecode", routecode);
                dynamicParams.Add("@stepcode", stepcode);
                            where B.is_delete<>'1' and  T.is_delete<>'1' and C.is_delete<>'1'";
                    dynamicParams.Add("@partcode", partcode);
                    dynamicParams.Add("@routecode", routecode);
                    dynamicParams.Add("@stepcode", stepcode);
                }
                else  //外协工序
                {
                    total = 0; //总条数
                    //sql = @"select B.code as eqpcode,B.name as eqpname,'' as wksp_code,'' as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                    //        from (
                    //        select materiel_code, eqp_code,eqp_value,stand_value,cavity_qty,unprice   from TPrteEqp_Stad
                    //        where materiel_code=@partcode  and route_code=@routecode and step_code=@stepcode
                    //        union all
                    //        select @partcode as materiel_code,eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice
                    //        from TFlw_Rteqp where step_code=@stepcode and style='W' and @partcode+eqp_code+step_code not in(select materiel_code+eqp_code+step_code  from TPrteEqp_Stad)
                    //        ) A
                    //        left join TCustomer B on A.eqp_code=B.code
                    //        where B.is_delete<>'1'";
                    sql = @"select B.code as eqpcode,B.name as eqpname,'' as wksp_code,'' as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                            from (
                            select materiel_code, eqp_code,eqp_value,stand_value,cavity_qty,unprice   from TPrteEqp_Stad
                            where materiel_code=@partcode  and route_code=@routecode and step_code=@stepcode
                            union all
                            select @partcode as materiel_code,C.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice
                            from TFlw_Rout A
                            inner join TFlw_Rtdt B on A.code=B.rout_code
                            left join TFlw_Rteqp C on B.step_code=C.step_code
                            where A.code=@routecode and B.step_code=@stepcode and style='W' and @partcode+A.code+C.eqp_code+B.step_code
                            not in(select materiel_code+route_code+eqp_code+step_code  from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode)
                            ) A
                            left join TCustomer B on A.eqp_code=B.code
                            where B.is_delete<>'1'";
                    dynamicParams.Add("@partcode", partcode);
                    dynamicParams.Add("@routecode", routecode);
                    dynamicParams.Add("@stepcode", stepcode);
                }
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -2079,12 +2569,28 @@
        #endregion
        #region[节拍工价查询]
        public static ToMessage BeatRateSearch(string partcode, string routecode, string stepcode, string eqpcode, int startNum, int endNum, string prop, string order)
        public static ToMessage BeatRateSearch(string stu_torgcode, string stu_torgtypecode, string partcode, string routecode, string stepcode, string eqpcode, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            string search1 = "";
            try
            {
                switch (stu_torgtypecode)
                {
                    case "":
                        break;
                    case "D":
                        search1 += "and L.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    case "W":
                        search1 += "and F.org_code=@stu_torgcode ";
                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
                        break;
                    default:
                        break;
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and A.materiel_code=@partcode ";
@@ -2102,7 +2608,7 @@
                }
                if (eqpcode != "" && eqpcode != null)
                {
                    search += "and A.eqp_code=@eqpcode";
                    search += "and A.eqp_code=@eqpcode ";
                    dynamicParams.Add("@eqpcode", eqpcode);
                }
                if (search == "")
@@ -2119,8 +2625,22 @@
                            left join TFlw_Rout C on A.route_code=C.code
                            left join TStep D on A.step_code=D.stepcode
                            left join TEqpInfo E on A.eqp_code=E.code
                            left join TOrganization F on E.wksp_code=F.org_code
                            where B.is_delete<>'1' and C.is_delete<>'1' and D.is_delete<>'1' and E.is_delete<>'1' and F.is_delete<>'1' " + search;
                            left join TOrganization F on C.torg_code=F.org_code
                            left join TOrganization L on  F.parent_id=L.id
                            where B.is_delete<>'1' and C.is_delete<>'1' and D.is_delete<>'1' and E.is_delete<>'1' and F.is_delete<>'1' " + search1 + search;
                sql += @"union all
                            select A.materiel_code as partcode,B.partname,B.partspec,A.route_code,C.name as route_name,
                            D.stepcode,D.stepname,A.eqp_code,E.name as eqp_name,''as wksp_code,'' as wksp_name,
                            A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                            from TPrteEqp_Stad A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TFlw_Rout C on A.route_code=C.code
                            left join TStep D on A.step_code=D.stepcode
                            left join TCustomer E on A.eqp_code=E.code
                            left join TOrganization F on C.torg_code=F.org_code
                            left join TOrganization L on  F.parent_id=L.id
                            where B.is_delete<>'1' and C.is_delete<>'1' and D.is_delete<>'1' and E.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -2147,7 +2667,7 @@
            try
            {
                list.Clear();
                //当前工序是否关联工艺路线
                //查询节拍工价表,当前产品、工艺路线、工序、设备是否设置节拍工价
                sql = @"select *  from TPrteEqp_Stad
                        where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
                dynamicParams.Add("@partcode", partcode);
@@ -2200,6 +2720,7 @@
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {