1.增加产品编码批量查找关联的工艺信息接口
2.增加根据工艺信息(工艺路线编码)批量查找关联工序集合接口
3.增加工单批量绑定工艺接口
已添加3个文件
已修改7个文件
593 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/BasicSettingController.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/WorkData/PartRouteList.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/WorkData/PartRouteStepList.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/WorkData/WorkStepList.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/BasicSettingController.cs
@@ -10,6 +10,7 @@
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.RolePermission;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
using static VueWebCoreApi.Models.RolePermission.RolePermissionSava;
@@ -967,6 +968,39 @@
        }
        #endregion
        #region[产品编码批量查找关联的工艺信息]
        /// <summary>
        /// äº§å“ç¼–码批量查找关联的工艺信息
        /// </summary>
        /// <param name="list">产品编码集合</param>
        /// <returns></returns>
        [Route(template: "PartSelectRputeList")]
        [HttpPost]
        public JsonResult PartSelectRputeList(List<PartRouteList> list)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = BasicSettingBLL.PartSelectRputeList(list, us);
            return Json(mes);
        }
        #endregion
        #region[根据工艺信息(工艺路线编码)批量查找关联工序集合]
        /// <summary>
        /// æ ¹æ®å·¥è‰ºä¿¡æ¯(工艺路线编码)批量查找关联工序集合
        /// </summary>
        /// <param name="list">产品编码,工艺路线编码集合</param>
        /// <returns></returns>
        [Route(template: "RouteSelectStepList")]
        [HttpPost]
        public JsonResult RouteSelectStepList(List<PartRouteStepList> list)
        {
            mes = BasicSettingBLL.RouteSelectStepList(list);
            return Json(mes);
        }
        #endregion
        #region[节拍工价查询]
        /// <summary>
        /// èŠ‚æ‹å·¥ä»·æŸ¥è¯¢
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -268,6 +268,39 @@
        }
        #endregion
        #region[MES工单批量绑定获取工序数据]
        /// <summary>
        /// MES工单批量绑定获取工序数据
        /// </summary>
        /// <param name="worksteplist">查询参数组</param>
        /// <returns></returns>
        [Route(template: "UpdateMesOrderStepListSearch")]
        [HttpPost]
        public JsonResult UpdateMesOrderStepListSearch(List<WorkStepList> worksteplist)
        {
            mes = WorkOrderBLL.UpdateMesOrderStepListSearch(worksteplist);
            return Json(mes);
        }
        #endregion
        #region[MES工单新增、编辑批量绑定提交]
        /// <summary>
        /// MES工单新增、编辑批量绑定提交
        /// </summary>
        /// <param name="OperType">操作类型</param>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "AddUpdateMesOrderList")]
        [HttpPost]
        public JsonResult AddUpdateMesOrderList(List<WorkList> json, string OperType)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = WorkOrderBLL.AddUpdateMesOrderList(OperType, json, us);
            return Json(mes);
        }
        #endregion
        #region[MES工单删除]
        /// <summary>
        /// MES工单删除
VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs
@@ -6,6 +6,7 @@
using VueWebCoreApi.DLL.DAL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.RolePermission;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
using static VueWebCoreApi.Models.RolePermission.RolePermissionSava;
@@ -385,6 +386,20 @@
        }
        #endregion
        #region[产品编码批量查找关联的工艺信息]
        public static ToMessage PartSelectRputeList(List<PartRouteList> list, User us)
        {
            return BasicSettingDAL.PartSelectRputeList(list, us);
        }
        #endregion
        #region[根据工艺信息(工艺路线编码)批量查找关联工序集合]
        public static ToMessage RouteSelectStepList(List<PartRouteStepList> list)
        {
            return BasicSettingDAL.RouteSelectStepList(list);
        }
        #endregion
        #region[节拍工价查询]
        public static ToMessage BeatRateSearch(string partcode, string routecode, string stepcode, User us, int startNum, int endNum, string prop, string order)
        {
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -89,6 +89,20 @@
        }
        #endregion
        #region[MES工单批量绑定获取工序数据]
        public static ToMessage UpdateMesOrderStepListSearch(List<WorkStepList> worksteplist)
        {
            return WorkOrderDAL.UpdateMesOrderStepListSearch(worksteplist);
        }
        #endregion
        #region[MES工单新增、编辑批量绑定提交]
        public static ToMessage AddUpdateMesOrderList(string OperType, List<WorkList> json, User us)
        {
            return WorkOrderDAL.AddUpdateMesOrderList(OperType, json, us);
        }
        #endregion
        #region[MES工单删除]
        public static ToMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty, User us)
        {
VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs
@@ -10,6 +10,7 @@
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.RolePermission;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
using static VueWebCoreApi.Models.RolePermission.RolePermission;
using static VueWebCoreApi.Models.RolePermission.RolePermissionSava;
@@ -3518,6 +3519,129 @@
        }
        #endregion
        #region[产品编码批量查找关联的工艺信息]
        public static ToMessage PartSelectRputeList(List<PartRouteList> list, User us)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<Dictionary<object, object>> dir = new List<Dictionary<object, object>>();
            try
            {
                dynamic dynObj = JObject.Parse(us.mesSetting);
                bool route = dynObj.route;
                if (route) //工艺路线版
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        // åˆ›å»ºä¸€ä¸ªæ–°çš„å­—å…¸
                        Dictionary<object, object> dict = new Dictionary<object, object>();
                        //通过产品编码查找关联的工艺路线信息
                        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'";
                        dynamicParams.Add("@partcode", list[i].partcode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        // å‘字典中添加数据
                        dict.Add("routedata", data);
                        // å°†å­—典添加到列表中
                        dir.Add(dict);
                    }
                }
                else //工序版
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        // åˆ›å»ºä¸€ä¸ªæ–°çš„å­—å…¸
                        Dictionary<object, object> dict = new Dictionary<object, object>();
                        //通过产品编码查找关联的工序信息
                        sql = @"select A.step_seq,A.step_code as stepcode,S.stepname as stepname,A.unprice as stepprice,A.isbott,A.isend
                            from (
                            select S.materiel_code,R.step_seq,S.step_code,S.unprice,R.isbott,R.isend   from TPrteEqp_Stad S
                            inner join TMateriel_Step R on S.materiel_code=R.materiel_code and S.step_code=R.step_code
                            where S.materiel_code=@partcode
                            union all
                            select  materiel_code,step_seq,step_code,'0' as unprice,isbott,isend from TMateriel_Step
                            where materiel_code=@partcode and materiel_code+step_code
                            not in(select materiel_code+step_code  from TPrteEqp_Stad
                            where materiel_code=@partcode)
                            ) as A
                            left join TStep S on A.step_code=S.stepcode";
                        dynamicParams.Add("@partcode", list[i].partcode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        // å‘字典中添加数据
                        dict.Add("stepdata", data);
                        // å°†å­—典添加到列表中
                        dir.Add(dict);
                    }
                }
                mes.code = "200";
                mes.message = "查询成功!";
                mes.count = dir.Count;
                mes.data = dir;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[根据工艺信息(工艺路线编码)批量查找关联工序集合]
        public static ToMessage RouteSelectStepList(List<PartRouteStepList> list)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            List<Dictionary<object, object>> dir = new List<Dictionary<object, object>>();
            try
            {
                for (int i = 0; i < list.Count; i++)
                {
                    // åˆ›å»ºä¸€ä¸ªæ–°çš„å­—å…¸
                    Dictionary<object, object> dict = new Dictionary<object, object>();
                    //通过工艺路线编码查找关联的工序信息
                    sql = @"select A.step_seq,A.step_code as stepcode,S.stepname as stepname,A.unprice as stepprice,A.isbott,A.isend
                        from (
                        select S.materiel_code,R.seq as step_seq,S.step_code,S.unprice,R.first_choke as isbott,R.last_choke as isend   from TPrteEqp_Stad S
                        inner join TFlw_Rtdt R on  S.route_code=R.rout_code and S.step_code=R.step_code
                        where S.materiel_code=@partcode and S.route_code=@route_code
                        union all
                        select  @partcode as materiel_code,B.seq as step_seq,B.step_code,'0' as unprice,B.first_choke as isbott,B.last_choke as isend from TFlw_Rout A
                        inner join TFlw_Rtdt B on A.code=B.rout_code
                        where A.code=@route_code and  @partcode+A.code+B.step_code
                        not in(select materiel_code+rout_code+step_code  from TPrteEqp_Stad
                        where materiel_code=@partcode and route_code=@route_code)
                        ) as A
                        left join TStep S on A.step_code=S.stepcode";
                    dynamicParams.Add("@partcode", list[i].partcode);
                    dynamicParams.Add("@route_code", list[i].routecode);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    // å‘字典中添加数据
                    dict.Add("stepdata", data);
                    // å°†å­—典添加到列表中
                    dir.Add(dict);
                }
                mes.code = "200";
                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[节拍工价查询]
        public static ToMessage BeatRateSearch(string partcode, string routecode, string stepcode, User us, int startNum, int endNum, string prop, string order)
        {
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs
@@ -85,7 +85,7 @@
                var sql = @"select top 100 percent AA.saleOrderCode,AA.m_po,AA.wkshp_code,AA.wkshp_name,AA.wo_code,AA.status,AA.lm_date,
                            AA.partcode,AA.partname,AA.partspec,AA.plan_qty,left(AA.concat_name,len(concat_name)-1) as concat_name 
                            from (
                                 select E.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name as wkshp_name,
                                 select W.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name as wkshp_name,
                                 case when W.status='START' then '执行中' when W.status='CLOSED' then '已完成' else '未开始' end as status,
                                 W.lm_date,
                                 P.partcode,P.partname,P.partspec,W.plan_qty,
@@ -96,12 +96,9 @@
                                   where n.wo_code=W.wo_code for xml path('')
                                 ) as concat_name   
                                 from TK_Wrk_Man W
                                 left join (
                                   select wo,saleOrderCode   from TKimp_Ewo
                                 ) as E on W.m_po=E.wo
                                 left join TMateriel_Info P on W.materiel_code=p.partcode
                                 left join  TOrganization F on W.wkshp_code=F.torg_code
                                 group by E.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,W.plan_qty
                                 group by W.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,W.plan_qty
                            ) as AA where AA.concat_name is not null " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
@@ -185,7 +182,7 @@
                             AA.status as å·¥å•状态,AA.lm_date as å•据日期
                             AA.partcode as äº§å“ç¼–码,AA.partname as äº§å“åç§°,AA.partspec as äº§å“è§„æ ¼,AA.plan_qty as ä»»åŠ¡æ•°é‡,left(AA.concat_name,len(concat_name)-1) as ç”Ÿäº§è¿›åº¦ 
                             from (
                                 select E.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name as wkshp_name,
                                 select W.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name as wkshp_name,
                                 case when W.status='START' then '执行中' when W.status='CLOSED' then '已完成' else '未开始' end as status,
                                 W.lm_date,
                                 P.partcode,P.partname,P.partspec,W.plan_qty,
@@ -196,12 +193,9 @@
                                   where n.wo_code=W.wo_code for xml path('')
                                 ) as concat_name   
                                 from TK_Wrk_Man W
                                 left join (
                                   select wo,saleOrderCode   from TKimp_Ewo
                                 ) as E on W.m_po=E.wo
                                 left join TMateriel_Info P on W.materiel_code=p.partcode
                                 left join  TOrganization F on W.wkshp_code=F.torg_code
                                 group by E.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,W.plan_qty
                                 group by W.saleOrderCode,W.m_po,W.wo_code,W.wkshp_code,F.torg_name,W.status,W.lm_date,P.partcode,P.partname,P.partspec,W.plan_qty
                            ) as AA
                            where where AA.concat_name is not null " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -1058,6 +1058,304 @@
        }
        #endregion
        #region[MES工单批量绑定获取工序数据]
        public static ToMessage UpdateMesOrderStepListSearch(List<WorkStepList> worksteplist)
        {
            string sql = ""; decimal canupdate_qty = 0;
            var dynamicParams = new DynamicParameters();
            List<Dictionary<object, object>> dir = new List<Dictionary<object, object>>();
            try
            {
                for (int i = 0; i < worksteplist.Count; i++)
                {
                    // åˆ›å»ºä¸€ä¸ªæ–°çš„å­—å…¸
                    Dictionary<object, object> dict = new Dictionary<object, object>();
                    if (worksteplist[i].data_sources == "ERP")  //数据来源ERP
                    {
                        //查询当前工单可修改数量=订单总数-已下达工单总数
                        sql = @"select isnull(plan_qty,0) as plan_qty   from TK_Wrk_Man
                            where sourceid=@sourceid and m_po=@sourcewo and wo_code=@wocode";
                        dynamicParams.Add("@sourceid", worksteplist[i].sourceid);
                        dynamicParams.Add("@sourcewo", worksteplist[i].sourcewo);
                        dynamicParams.Add("@wocode", worksteplist[i].wocode);
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        //当前工单数量
                        canupdate_qty = decimal.Parse(data.Rows[0]["plan_qty"].ToString());
                    }
                    if (worksteplist[i].data_sources == "MES")  //数据来源MES
                    {
                        if (worksteplist[i].sourceid == "" || worksteplist[i].sourceid == null) //无源单
                        {
                            //查询当前工单可修改数量=工单总数
                            sql = @"select plan_qty   from TK_Wrk_Man where wo_code=@wo_code";
                            dynamicParams.Add("@wo_code", worksteplist[i].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 as stepcode,T.stepname,S.stepprice,(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_qty,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", worksteplist[i].wocode);
                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                    // å‘字典中添加数据
                    dict.Add("canupdate_qty", canupdate_qty);
                    dict.Add("stepdata", data1);
                    // å°†å­—典添加到列表中
                    dir.Add(dict);
                    mes.code = "200";
                    mes.count = dir.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工单新增、编辑批量绑定提交]
        public static ToMessage AddUpdateMesOrderList(string operType, List<WorkList> json, User us)
        {
            string sql = "", route_code = "";
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
            try
            {
                dynamic dynObj = JObject.Parse(us.mesSetting);
                bool route = dynObj.route;
                if (!route) //工序版
                {
                    route_code = null;
                }
                if (operType == "Add")
                {
                    for (int i = 0; i < json.Count; i++)
                    {
                        route_code = json[i].routecode;
                        //写入工单表
                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
                                values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = json[i].wocode,
                                wotype = json[i].wotype,
                                status = json[i].wostatus,
                                wkshp_code = json[i].wkshopcode,
                                plan_qty = json[i].woqty,
                                lm_user = us.usercode,
                                lm_date = DateTime.Now.ToString(),
                                materiel_code = json[i].partcode,
                                route_code = route_code,
                                sourceid = json[i].sourceid == "" ? null : json[i].sourceid, //无源单时赋值NULL
                                m_po = json[i].sourcewo,
                                saleOrderDeliveryDate = json[i].deliverydate,
                                plan_startdate = json[i].paystartdate,
                                plan_enddate = json[i].payenddate,
                                orderlev = "3",//优先级:特级(1) ç´§æ€¥ï¼ˆ2) æ­£å¸¸ï¼ˆ3)
                                isaps = "N", //是否排产,默认N  Y=是   N=否
                                data_sources = json[i].data_sources,
                                isstep = json[i].isstep  //是否关联工序
                            }
                        });
                        //写入工序任务表
                        for (int j = 0; j < json[i].WorkListSub.Count; j++)
                        {
                            sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    wo_code = json[i].wocode,
                                    seq = json[i].WorkListSub[j].stepseq,
                                    step_code = json[i].WorkListSub[j].stepcode,
                                    route_code = route_code,
                                    stepprice = json[i].WorkListSub[j].stepprice,
                                    plan_qty = json[i].woqty,
                                    status = json[i].wostatus,
                                    isbott = json[i].WorkListSub[j].isbott,
                                    isend = json[i].WorkListSub[j].isend,
                                    lm_user = us.usercode,
                                    lm_date = DateTime.Now.ToString()
                                }
                            });
                        }
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "新增", "新增了工单:" + json[0].wocode, us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.message = "MES工单新建成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.message = "MES工单新建失败!";
                        mes.data = null;
                    }
                }
                if (operType == "Update")
                {
                    for (int i = 0; i < json.Count; i++)
                    {
                        route_code = json[i].routecode;
                        //修改工单表
                        sql = @"update TK_Wrk_Man set wotype=@wotype,wkshp_code=@wkshp_code,plan_qty=@plan_qty,lm_user=@lm_user,lm_date=@lm_date,
                            materiel_code=@materiel_code,route_code=@route_code,sourceid=@sourceid,m_po=@m_po,saleOrderDeliveryDate=@saleOrderDeliveryDate,plan_startdate=@plan_startdate,plan_enddate=@plan_enddate,isstep=@isstep
                            where wo_code=@wo_code";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = json[i].wocode,
                                wotype = json[i].wotype,
                                wkshp_code = json[i].wkshopcode,
                                plan_qty = json[i].woqty,
                                materiel_code = json[i].partcode,
                                route_code = route_code,
                                sourceid = json[i].sourceid == "" ? null : json[i].sourceid, //无源单时赋值NULL
                                m_po = json[i].sourcewo,
                                saleOrderDeliveryDate = json[i].deliverydate,
                                plan_startdate = json[i].paystartdate,
                                plan_enddate = json[i].payenddate,
                                lm_user = us.usercode,
                                lm_date = DateTime.Now.ToString(),
                                isstep = json[i].isstep  //是否关联工序
                            }
                        });
                        //删除工单工序表
                        sql = @"delete TK_Wrk_Step where wo_code=@wo_code";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                wo_code = json[i].wocode
                            }
                        });
                        //写入工单工序表
                        for (int j = 0; j < json[i].WorkListSub.Count; j++)
                        {
                            sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    wo_code = json[i].wocode,
                                    seq = json[i].WorkListSub[j].stepseq,
                                    step_code = json[i].WorkListSub[j].stepcode,
                                    route_code = route_code,
                                    stepprice = json[i].WorkListSub[j].stepprice,
                                    plan_qty = json[i].woqty,
                                    status = json[i].wostatus,
                                    isbott = json[i].WorkListSub[j].isbott,
                                    isend = json[i].WorkListSub[j].isend,
                                    lm_user = us.usercode,
                                    lm_date = DateTime.Now.ToString()
                                }
                            });
                        }
                        //判断源头单据是否来源ERP
                        if (json[i].data_sources == "ERP")
                        {
                            //判断工单修改数量差值是否为0
                            if (json[i].difference != "0")
                            {
                                string staus = "";
                                //查询订单总数,已下达数量
                                sql = @"select qty,relse_qty  from TKimp_Ewo where id=@sourceid and wo=@sourcewo";
                                dynamicParams.Add("@sourceid", json[i].sourceid);
                                dynamicParams.Add("@sourcewo", json[i].sourcewo);
                                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                                //当前工单可修改数量=订单数量-非当前工单总下达工单数量
                                decimal qty = decimal.Parse(data0.Rows[0]["qty"].ToString());//订单总数
                                decimal relse_qty = decimal.Parse(data0.Rows[0]["relse_qty"].ToString());//订单已下达总数
                                relse_qty = relse_qty + decimal.Parse(json[i].difference);//新的下达数量=原始下达数量+差值(正负)
                                if (qty == relse_qty)
                                {
                                    staus = "CREATED"; //全部下达
                                }
                                else
                                {
                                    staus = "CREATING";//部分下达
                                }
                                //更新订单表状态、已下达数量
                                sql = @"update TKimp_Ewo set status=@status,relse_qty=@relse_qty where id=@sourceid and wo=@sourcewo";
                                list.Add(new
                                {
                                    str = sql,
                                    parm = new
                                    {
                                        status = staus,
                                        relse_qty = relse_qty,
                                        sourceid = json[i].sourceid,
                                        sourcewo = json[i].sourcewo
                                    }
                                });
                            }
                        }
                    }
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "修改", "修改了工单:" + string.Join(",", json.Select(j => j.wocode.ToString())), us.usertype);
                        mes.code = "200";
                        mes.count = 0;
                        mes.message = "修改操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.message = "修改操作失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单删除]
        public static ToMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty, User us)
        {
VueWebCoreApi/Models/WorkData/PartRouteList.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models.WorkData
{
    public class PartRouteList
    {
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string partcode { get; set; }
    }
}
VueWebCoreApi/Models/WorkData/PartRouteStepList.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models.WorkData
{
    public class PartRouteStepList
    {
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string partcode { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–码
        /// </summary>
        public string routecode { get; set; }
    }
}
VueWebCoreApi/Models/WorkData/WorkStepList.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models.WorkData
{
    public class WorkStepList
    {
        /// <summary>
        /// æºå•id
        /// </summary>
        public string sourceid { get; set; }
        /// <summary>
        /// æºå•单号
        /// </summary>
        public string sourcewo { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string wocode { get; set; }
        /// <summary>
        /// æ•°æ®æ¥æºï¼šERP/MES
        /// </summary>
        public string data_sources { get; set; }
    }
}