yl
15 小时以前 8f7412f91f82efad3c0e9f1243aa40e1680c7240
1.增加SOP任务管理接口
已添加3个文件
已修改1个文件
393 ■■■■■ 文件已修改
VueWebCoreApi/ApiGroup/OpenApiGroup.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/SopSearchController.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/SopSearchBLL.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/SopSearchDAL.cs 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/ApiGroup/OpenApiGroup.cs
@@ -54,8 +54,10 @@
        App安灯管理 = 22,
        [Description("SOP管理")]
        SOP管理 = 23,
        [Description("SOP任务管理")]
        SOP任务管理 = 24,
        [Description("App生产管理")]
        App生产管理 = 24
        App生产管理 = 25
    }
}
VueWebCoreApi/Controllers/SopSearchController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.Controllers
{
    [ApiExplorerSettings(GroupName = "SOP任务管理")]
    [ApiController]
    [Route("api/[controller]")]
    public class SopSearchController : Controller
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisCommon redis = new RedisCommon();
        #region[MES工单查询]
        /// <summary>
        /// MES工单查询
        /// </summary>
        /// <param name="mesorderstus">工单状态码</param>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="mesordercode">工单编号</param>
        /// <param name="sourceorder">源单单号</param>
        /// <param name="saleordercode">销售单号</param>
        /// <param name="ordertype">单据类型</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
        /// <param name="datatype">日期类型(计划开工(PS)、计划完工(PE)、预计交付(ED)、创建日期(CT))</param>
        /// <param name="creatuser">创建人员</param>
        /// <param name="searchdate">查询日期</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "MesOrderSearch")]
        [HttpGet]
        public JsonResult MesOrderSearch(int page, int rows, string prop, string order, string mesorderstus = null, string wkshopcode = null, string mesordercode = null, string sourceorder = null, string saleordercode = null, string ordertype = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string datatype = null, string searchdate = null)
        {
            string paydatestartdate = "";  //预计开工开始时间
            string paydateenddate = "";    //预计开工结束时间
            if (searchdate != "" && searchdate != null)
            {
                paydatestartdate = searchdate.Split('~')[0].ToString();
                paydateenddate = searchdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = SopSearchBLL.MesOrderSearch(mesorderstus, wkshopcode, mesordercode, sourceorder, saleordercode, ordertype, partcode, partname, partspec, startNum, creatuser, datatype, paydatestartdate, paydateenddate, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[MES工单编辑获取工序数据]
        /// <summary>
        /// MES工单编辑获取工序数据
        /// </summary>
        /// <param name="sourceid">源单id</param>
        /// <param name="sourcewo">源单单号</param>
        /// <param name="wocode">工单号</param>
        /// <param name="data_sources">数据来源:ERP/MES</param>
        /// <returns></returns>
        [Route(template: "UpdateMesOrderStepSearch")]
        [HttpGet]
        public JsonResult UpdateMesOrderStepSearch(string sourceid, string sourcewo, string wocode, string data_sources)
        {
            mes = SopSearchBLL.UpdateMesOrderStepSearch(sourceid, sourcewo, wocode, data_sources);
            return Json(mes);
        }
        #endregion
        #region[MES工单查看工艺SOP]
        /// <summary>
        /// MES工单查看工艺SOP
        /// </summary>
        /// <param name="materielcode">产品编码</param>
        /// <param name="routecode">工艺路线编码</param>
        /// <param name="stepcode">工序编码</param>
        /// <returns></returns>
        [Route(template: "MesOrderProcessSopSearch")]
        [HttpGet]
        public JsonResult MesOrderProcessSopSearch(string materielcode, string routecode, string stepcode)
        {
            mes = SopSearchBLL.MesOrderProcessSopSearch(materielcode, routecode, stepcode);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/SopSearchBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.DAL;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.BLL
{
    public class SopSearchBLL
    {
        #region[MES工单查询]
        public static ToMessage MesOrderSearch(string mesorderstus, string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string datatype, string paydatestartdate, string paydateenddate, int endNum, string prop, string order)
        {
            return SopSearchDAL.MesOrderSearch(mesorderstus, wkshopcode, mesordercode, sourceorder, saleordercode, ordertype, partcode, partname, partspec, startNum, creatuser, datatype, paydatestartdate, paydateenddate, endNum, prop, order);
        }
        #endregion
        #region[MES工单编辑获取工序数据]
        public static ToMessage UpdateMesOrderStepSearch(string sourceid, string sourcewo, string wocode, string data_sources)
        {
            return SopSearchDAL.UpdateMesOrderStepSearch(sourceid, sourcewo, wocode, data_sources);
        }
        #endregion
        #region[MES工单查看工艺SOP]
        public static ToMessage MesOrderProcessSopSearch(string materielcode, string routecode, string stepcode)
        {
            return SopSearchDAL.MesOrderProcessSopSearch(materielcode,routecode,stepcode);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/SopSearchDAL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,262 @@
using Dapper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.DAL
{
    public class SopSearchDAL
    {
        public static DataTable dt;    //定义全局变量dt
        public static bool res;       //定义全局变量dt
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        public static string strProcName = ""; //定义全局sql变量
        public static List<SqlParameter> listStr = new List<SqlParameter>(); //定义全局参数集合
        public static SqlParameter[] parameters; //定义全局SqlParameter参数数组
        #region[MES工单查询]
        public static ToMessage MesOrderSearch(string mesorderstus, string wkshopcode, string mesordercode, string sourceorder, string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string datatype, string paydatestartdate, string paydateenddate, 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 (wkshopcode != "" && wkshopcode != null)
                {
                    search += "and A.wkshp_code=@wkshopcode ";
                    dynamicParams.Add("@wkshopcode", wkshopcode);
                }
                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 (saleordercode != "" && saleordercode != null)
                {
                    search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
                    dynamicParams.Add("@saleordercode", saleordercode);
                }
                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 (creatuser != "" && creatuser != null)
                {
                    search += "and U.username like '%'+@creatuser+'%' ";
                    dynamicParams.Add("@creatuser", creatuser);
                }
                if (paydatestartdate != "" && paydatestartdate != null)
                {
                    switch (datatype)
                    {
                        case "PS":
                            search += "and A.plan_startdate between @paydatestartdate and @paydateenddate ";
                            dynamicParams.Add("@paydatestartdate", paydatestartdate + " 00:00:00");
                            dynamicParams.Add("@paydateenddate", paydateenddate + " 23:59:59");
                            break;
                        case "PE":
                            search += "and A.plan_enddate between @paydatestartdate and @paydateenddate ";
                            dynamicParams.Add("@paydatestartdate", paydatestartdate + " 00:00:00");
                            dynamicParams.Add("@paydateenddate", paydateenddate + " 23:59:59");
                            break;
                        case "ED":
                            search += "and A.saleOrderDeliveryDate between @paydatestartdate and @paydateenddate ";
                            dynamicParams.Add("@paydatestartdate", paydatestartdate + " 00:00:00");
                            dynamicParams.Add("@paydateenddate", paydateenddate + " 23:59:59");
                            break;
                        case "CT":
                            search += "and A.lm_date between @paydatestartdate and @paydateenddate ";
                            dynamicParams.Add("@paydatestartdate", paydatestartdate + " 00:00:00");
                            dynamicParams.Add("@paydateenddate", paydateenddate + " 23:59:59");
                            break;
                        default:
                            break;
                    }
                }
                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.route_code,B.default_route,R.name as route_name,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name,C.islastreport,
                            A.stck_code,D.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,A.saleOrderDeliveryDate,W.saleOrderCode,U.username as lm_user,A.lm_date,A.data_sources,A.isstep,A.clerkuser,
                            B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6,A.printcount
                            from TK_Wrk_Man A
                            left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code and A.sbid=W.sbid
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.torg_code
                            left join TSecStck D on A.stck_code=D.code
                            left join TUser U on A.lm_user=U.usercode
                            left join TOrganization L on  C.parent_id=L.id
                            left join TFlw_Rout R on A.route_code=R.code
                            where A.is_delete<>'1' and A.status<>'CLOSED' and isstep='Y' " + 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 UpdateMesOrderStepSearch(string sourceid, string sourcewo, string wocode, string data_sources)
        {
            string sql = ""; decimal canupdate_qty = 0;
            var dynamicParams = new DynamicParameters();
            Dictionary<object, object> dir = new Dictionary<object, object>();
            try
            {
                if (data_sources == "ERP")  //数据来源ERP
                {
                    //查询订单任务总数
                    sql = @"select qty,relse_qty  from TKimp_Ewo where id=@sourceid and wo=@sourcewo";
                    dynamicParams.Add("@sourceid", sourceid);
                    dynamicParams.Add("@sourcewo", sourcewo);
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    //查询当前工单可修改数量=订单总数-已下达工单总数
                    sql = @"select isnull(sum(plan_qty),0) as plan_qty   from TK_Wrk_Man
                            where sourceid=@sourceid and m_po=@sourcewo and wo_code<>@wocode";
                    dynamicParams.Add("@sourceid", sourceid);
                    dynamicParams.Add("@sourcewo", sourcewo);
                    dynamicParams.Add("@wocode", wocode);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    //当前工单可修改数量=订单数量-非当前工单总下达工单数量
                    canupdate_qty = decimal.Parse(data0.Rows[0]["qty"].ToString()) - decimal.Parse(data.Rows[0]["plan_qty"].ToString());
                }
                if (data_sources == "MES")  //数据来源MES
                {
                    if (sourceid == "" || sourceid == null) //无源单
                    {
                        //查询当前工单可修改数量=工单总数
                        sql = @"select plan_qty   from TK_Wrk_Man where wo_code=@wo_code";
                        dynamicParams.Add("@wo_code", wocode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        //当前工单可修改数量=工单数量
                        canupdate_qty = decimal.Parse(data.Rows[0]["plan_qty"].ToString());
                    }
                    else //有源单(报废补单)
                    {
                        //不控制 æ ‡è¯†ä¸º-1
                        canupdate_qty = -1;
                    }
                }
                //获取工序信息
                sql = @"select S.wo_code,S.seq,S.step_code,T.stepname,S.stepprice,S.ratio,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty,
                        S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty,S.plan_qty,(isnull(S.plan_quantity,0)-(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0))) as delive_qty,S.isbott,S.isend
                        from TK_Wrk_Step S
                        left join TStep  T on S.step_code=T.stepcode
                        where S.wo_code=@wocode order by S.seq ";
                dynamicParams.Add("@wocode", wocode);
                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                dir.Add("canupdate_qty", canupdate_qty);
                dir.Add("stepdata", data1);
                mes.code = "200";
                mes.count = data1.Rows.Count;
                mes.message = "查询成功";
                mes.data = dir;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单查看工艺SOP]
        public static ToMessage MesOrderProcessSopSearch(string materielcode, string routecode, string stepcode)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //查询系统流程配置
                strProcName = @"select json from TSystemProcConfig";
                DataTable dt0_ = DBHelper.GetTable(strProcName);
                dynamic dynObj = JObject.Parse(dt0_.Rows[0]["json"].ToString());
                bool route = dynObj.route;
                if (route) //工艺路线版
                {
                    //获取SOP文件信息
                    sql = @"select filename,filepath,version from TProcessSop
                        where  materielcode=@materielcode and routecode=@routecode and stepcode=@stepcode
                        order by version";
                    dynamicParams.Add("@materielcode", materielcode);
                    dynamicParams.Add("@routecode", routecode);
                    dynamicParams.Add("@stepcode", stepcode);
                }
                else
                {
                    //获取SOP文件信息
                    sql = @"select filename,filepath,version from TProcessSop
                        where  materielcode=@materielcode and stepcode=@stepcode
                        order by version";
                    dynamicParams.Add("@materielcode", materielcode);
                    dynamicParams.Add("@stepcode", stepcode);
                }
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.count = data.Rows.Count;
                mes.data = data;
                mes.message = "查询成功!";
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}