永康嘉持电器有限公司MES后端API
1.用户信息新增:薪资类型:S(计件),T(计时),M(月)
2.人员工资明细报表去掉外协部分
3.生产工单增加批量绑定工艺接口(PartSelectRputeList,RouteSelectStepList,UpdateMesOrderStepListSearch,AddUpdateMesOrderList)
4.生产工单增加自定义字段(B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6)
5.增加仓库看板接口(ProcureOutsourcLeftTop,ProductConsignmentLeftBottom,ProcureOutsourcRightTop,ProductionStockedInRightBottom)
已添加3个文件
已修改12个文件
880 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/BasicSettingController.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/KanBanManagerentController.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/KanBanManagerentBLL.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/KanBanManagerentDAL.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 334 ●●●●● 补丁 | 查看 | 原始文档 | 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;
@@ -968,6 +969,40 @@
        }
        #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/KanBanManagerentController.cs
@@ -17,9 +17,9 @@
        ToMessage mes = new ToMessage();
        RedisCommon redis = new RedisCommon();
        #region[车间看板,上生产信息]
        #region[嘉驰车间看板,上生产信息]
        /// <summary>
        /// è½¦é—´çœ‹æ¿,上生产信息
        /// å˜‰é©°è½¦é—´çœ‹æ¿,上生产信息
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
@@ -32,9 +32,9 @@
        }
        #endregion
        #region[车间看板,下左近一周不良趋势]
        #region[嘉驰车间看板,下左近一周不良趋势]
        /// <summary>
        /// è½¦é—´çœ‹æ¿,下左近一周不良趋势
        /// å˜‰é©°è½¦é—´çœ‹æ¿,下左近一周不良趋势
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
@@ -47,9 +47,9 @@
        }
        #endregion
        #region[车间看板,下右近一月不良统计]
        #region[嘉驰车间看板,下右近一月不良统计]
        /// <summary>
        /// è½¦é—´çœ‹æ¿,下右近一月不良统计
        /// å˜‰é©°è½¦é—´çœ‹æ¿,下右近一月不良统计
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
@@ -177,5 +177,62 @@
            return Json(mes);
        }
        #endregion
        #region[嘉驰仓库看板左上,采购待入库]
        /// <summary>
        /// å˜‰é©°ä»“库看板左上,采购待入库
        /// </summary>
        /// <returns></returns>
        [Route(template: "ProcureOutsourcLeftTop")]
        [HttpGet]
        public JsonResult ProcureOutsourcLeftTop()
        {
            mes = KanBanManagerentBLL.ProcureOutsourcLeftTop();
            return Json(mes);
        }
        #endregion
        #region[嘉驰仓库看板左下,销售待发货]
        /// <summary>
        /// å˜‰é©°ä»“库看板左下,销售待发货
        /// </summary>
        /// <returns></returns>
        [Route(template: "ProductConsignmentLeftBottom")]
        [HttpGet]
        public JsonResult ProductConsignmentLeftBottom()
        {
            mes = KanBanManagerentBLL.ProductConsignmentLeftBottom();
            return Json(mes);
        }
        #endregion
        #region[嘉驰仓库看板右上,近一周采购待入库物料排行TOP5]
        /// <summary>
        /// å˜‰é©°ä»“库看板右上,近一周采购待入库物料排行TOP5
        /// </summary>
        /// <returns></returns>
        [Route(template: "ProcureOutsourcRightTop")]
        [HttpGet]
        public JsonResult ProcureOutsourcRightTop()
        {
            mes = KanBanManagerentBLL.ProcureOutsourcRightTop();
            return Json(mes);
        }
        #endregion
        #region[嘉驰仓库看板右下,近一周销售待发货产品排行TOP5]
        /// <summary>
        /// å˜‰é©°ä»“库看板右下,近一周销售待发货产品排行TOP5
        /// </summary>
        /// <returns></returns>
        [Route(template: "ProductionStockedInRightBottom")]
        [HttpGet]
        public JsonResult ProductionStockedInRightBottom()
        {
            mes = KanBanManagerentBLL.ProductionStockedInRightBottom();
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -19,7 +19,7 @@
    [ApiExplorerSettings(GroupName = "工单管理")]
    [ApiController]
    [Route("api/[controller]")]
    [ChannelActionFilter]
    //[ChannelActionFilter]
    public class WorkOrderController : Controller
    {
        //定义全局信息返回变量
@@ -265,6 +265,40 @@
            return Json(mes);
        }
        #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>
@@ -551,13 +585,14 @@
            string reckway = obj["reckway"].ToString(); //计件方式(班组:group、个人:person)
            string usergroupcode = obj["usergroupcode"].ToString(); //班组编码
            string reportuser = obj["reportuser"].ToString();  //报工人员
            string payrate = obj["payrate"].ToString();  //薪资类型:S(计件),T(计时),M(月)
            string taskqty = obj["taskqty"].ToString(); //任务数量
            string startqty = obj["startqty"].ToString(); //开工数量
            string reportqty = obj["reportqty"].ToString(); //报工工数量
            string defectlist = obj["defectlist"].ToString();//不良汇总
            string remarks = obj["remarks"].ToString(); //备注
            List<ReportDefectList> defectobjs = JsonConvert.DeserializeObject<List<ReportDefectList>>(defectlist);
            mes = WorkOrderBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, stepprice, eqpcode, inbarcode, reckway, usergroupcode, reportuser, taskqty, startqty, reportqty, defectobjs, remarks, us);
            mes = WorkOrderBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, stepprice, eqpcode, inbarcode, reckway, usergroupcode, reportuser, payrate, taskqty, startqty, reportqty, defectobjs, remarks, us);
            return Json(mes);
        }
        #endregion
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,22 @@
        }
        #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/KanBanManagerentBLL.cs
@@ -9,21 +9,21 @@
{
    public class KanBanManagerentBLL
    {
        #region[车间看板,上生产信息]
        #region[嘉驰车间看板,上生产信息]
        public static ToMessage WorkShopProduceTopData(string wkshopcode)
        {
            return KanBanManagerentDAL.WorkShopProduceTopData(wkshopcode);
        }
        #endregion
        #region[车间看板,下左近一周不良趋势]
        #region[嘉驰车间看板,下左近一周不良趋势]
        public static ToMessage WorkShopProduceBottomLeftData(string wkshopcode)
        {
            return KanBanManagerentDAL.WorkShopProduceBottomLeftData(wkshopcode);
        }
        #endregion
        #region[车间看板,下右近一月不良统计]
        #region[嘉驰车间看板,下右近一月不良统计]
        public static ToMessage WorkShopProduceBottomRightData(string wkshopcode)
        {
            return KanBanManagerentDAL.WorkShopProduceBottomRightData(wkshopcode);
@@ -87,5 +87,34 @@
            return KanBanManagerentDAL.WareHouseRightBottomData();
        }
        #endregion
        #region[嘉驰仓库看板左上,采购待入库]
        public static ToMessage ProcureOutsourcLeftTop()
        {
            return KanBanManagerentDAL.ProcureOutsourcLeftTop();
        }
        #endregion
        #region[嘉驰仓库看板左下,销售待发货]
        public static ToMessage ProductConsignmentLeftBottom()
        {
            return KanBanManagerentDAL.ProductConsignmentLeftBottom();
        }
        #endregion
        #region[嘉驰仓库看板右上,近一周采购待入库物料排行TOP5]
        public static ToMessage ProcureOutsourcRightTop()
        {
            return KanBanManagerentDAL.ProcureOutsourcRightTop();
        }
        #endregion
        #region[嘉驰仓库看板右下,近一周销售待发货产品排行TOP5]
        public static ToMessage ProductionStockedInRightBottom()
        {
            return KanBanManagerentDAL.ProductionStockedInRightBottom();
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -88,6 +88,21 @@
        }
        #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)
        {
@@ -174,9 +189,9 @@
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode,string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode,string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser,string payrate, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
        {
            return WorkOrderDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, stepprice, eqpcode, inbarcode, reckway, usergroupcode, reportuser, taskqty, startqty, reportqty, defectobjs, remarks, us);
            return WorkOrderDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, stepprice, eqpcode, inbarcode, reckway, usergroupcode, reportuser, payrate, taskqty, startqty, reportqty, defectobjs, remarks, us);
        }
        #endregion
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;
@@ -3512,6 +3513,130 @@
        }
        #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,S.stepname as step_name,A.unprice,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,S.stepname as step_name,A.unprice,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/GeneralBasicDataDAL.cs
@@ -156,7 +156,7 @@
            string search = "";
            try
            {
                sql = @"select usercode,username from TUser where  status='Y'";
                sql = @"select usercode,username,payrate from TUser where  status='Y'";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.message = "查询成功!";
@@ -208,7 +208,7 @@
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select usercode,username from TUser where  storg_code=@torgcode";
                sql = @"select usercode,username,payrate from TUser where  storg_code=@torgcode";
                dynamicParams.Add("@torgcode", torgcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
VueWebCoreApi/DLL/DAL/KanBanManagerentDAL.cs
@@ -12,7 +12,7 @@
    {
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        #region[车间看板,上生产信息]
        #region[嘉驰车间看板,上生产信息]
        public static ToMessage WorkShopProduceTopData(string wkshopcode)
        {
            string sql = "";
@@ -38,7 +38,7 @@
        }
        #endregion
        #region[车间看板,下左近一周不良趋势]
        #region[嘉驰车间看板,下左近一周不良趋势]
        public static ToMessage WorkShopProduceBottomLeftData(string wkshopcode)
        {
            string sql = "";
@@ -71,7 +71,7 @@
        }
        #endregion
        #region[车间看板,下右近一月不良统计]
        #region[嘉驰车间看板,下右近一月不良统计]
        public static ToMessage WorkShopProduceBottomRightData(string wkshopcode)
        {
            string sql = "";
@@ -331,5 +331,99 @@
            return mes;
        }
        #endregion
        #region[嘉驰仓库看板左上,采购待入库]
        public static ToMessage ProcureOutsourcLeftTop()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_JCKanBan_ProcureNotReceived";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                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 ProductConsignmentLeftBottom()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_JCKanBan_ProductionNotDeliver";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[嘉驰仓库看板右上,近一周采购待入库物料排行TOP5]
        public static ToMessage ProcureOutsourcRightTop()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_JCKanBan_ProcureNotReceivedSumTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[嘉驰仓库看板右下,近一周销售待发货产品排行TOP5]
        public static ToMessage ProductionStockedInRightBottom()
        {
            var sql = "";
            try
            {
                sql = @"select * from h_v_JCKanBan_ProductionNotDeliverSumTop";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs
@@ -1608,7 +1608,7 @@
            try
            {
                //班组获取人员列表
                sql = @"select usercode,username  from TUser where stu_torgcode=@stu_torgcode and usergroup_code=@usergroupcode and is_delete<>'1'";
                sql = @"select usercode,username,payrate  from TUser where stu_torgcode=@stu_torgcode and usergroup_code=@usergroupcode and is_delete<>'1'";
                dynamicParams.Add("@stu_torgcode", stu_torgcode);
                dynamicParams.Add("@usergroupcode", usergroupcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -1641,7 +1641,7 @@
                    dynamicParams.Add("@usercode", usercode);
                }
                //班组获取人员列表
                sql = @"select usercode,username  from TUser where is_delete<>'1' and usercode<>'9999'" + search;
                sql = @"select usercode,username,payrate  from TUser where is_delete<>'1' and usercode<>'9999'" + search;
                dynamicParams.Add("@usercode", usercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs
@@ -540,24 +540,7 @@
                            left join TStep S on A.step_code=S.stepcode
                            left join TMateriel_Info P on A.materiel_code=P.partcode
                            left join  TOrganization F on M.wkshp_code=F.torg_code
                            where A.style='B' and B.style='B' and A.verify='Y' and B.usergroup_code=''
                            union all
                            select M.wkshp_code,F.torg_name as wkshp_name,M.saleOrderCode,A.wo_code,A.materiel_code as partcode,P.partname,P.partspec,A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,K.isend,
                            M.plan_qty as task_qty,B.sqty as report_qty,isnull(A.step_price,0) as step_price,(B.sqty*isnull(A.step_price,0)) as moneys,
                            B.in_person as usercode,
                            STUFF((SELECT ',' + U.username
                                    FROM TUser U
                                    WHERE CHARINDEX(',' + U.usercode + ',', ',' + B.in_person + ',') > 0
                                    FOR XML PATH('')), 1, 1, '') AS username,
                            B.in_time as report_date
                            from TK_Wrk_OutRecord A
                            inner join TK_Wrk_OutRecordSub B on A.id = B.m_id
                            left join TK_Wrk_Man M on A.wo_code = M.wo_code
                            left join TK_Wrk_Step K on M.wo_code=K.wo_code and A.step_code=K.step_code
                            left join TStep S on A.step_code = S.stepcode
                            left join TMateriel_Info P on A.materiel_code = P.partcode
                            left join  TOrganization F on M.wkshp_code=F.torg_code
                            where A.style = 'S' and B.style = 'S'  and A.verify='Y'
                            where A.style='B' and B.style='B' and B.payrate='S' and A.verify='Y' and B.usergroup_code=''
                            ) as AA
                            where " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
@@ -666,24 +649,7 @@
                            left join TStep S on A.step_code=S.stepcode
                            left join TMateriel_Info P on A.materiel_code=P.partcode
                            left join  TOrganization F on M.wkshp_code=F.torg_code
                            where A.style='B' and B.style='B' and A.verify='Y' and B.usergroup_code=''
                            union all
                            select M.wkshp_code,F.torg_name as wkshp_name,M.saleOrderCode,A.wo_code,A.materiel_code as partcode,P.partname,P.partspec,A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,K.isend,
                            M.plan_qty as task_qty,B.sqty as report_qty,isnull(A.step_price,0) as step_price,(B.sqty*isnull(A.step_price,0)) as moneys,
                            B.in_person as usercode,
                            STUFF((SELECT ',' + U.username
                                    FROM TUser U
                                    WHERE CHARINDEX(',' + U.usercode + ',', ',' + B.in_person + ',') > 0
                                    FOR XML PATH('')), 1, 1, '') AS username,
                            B.in_time as report_date
                            from TK_Wrk_OutRecord A
                            inner join TK_Wrk_OutRecordSub B on A.id = B.m_id
                            left join TK_Wrk_Man M on A.wo_code = M.wo_code
                            left join TK_Wrk_Step K on M.wo_code=K.wo_code and A.step_code=K.step_code
                            left join TStep S on A.step_code = S.stepcode
                            left join TMateriel_Info P on A.materiel_code = P.partcode
                            left join  TOrganization F on M.wkshp_code=F.torg_code
                            where A.style = 'S' and B.style = 'S'  and A.verify='Y'
                            where A.style='B' and B.style='B' and B.payrate='S' and A.verify='Y' and B.usergroup_code=''
                            ) as AA
                            where " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -104,7 +104,8 @@
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id, A.status,A.wo,A.materiel_code as partcode,B.partname,B.partspec,A.qty,A.relse_qty,A.wkshp_code,C.torg_name as wkshp_name,
                            A.stck_code,D.name as stck_name,A.saleOrderCode,A.saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate,A.sbid,A.clerkuser
                            A.stck_code,D.name as stck_name,A.saleOrderCode,A.saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate,A.sbid,A.clerkuser,
                            B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6
                            from TKimp_Ewo A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.torg_code
@@ -625,7 +626,8 @@
                // --------------查询指定数据--------------
                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,R.name as route_name,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name,
                            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
                            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
                            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
@@ -712,7 +714,8 @@
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name,
                            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,S.laborbad_qty,S.materielbad_qty
                            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,S.laborbad_qty,S.materielbad_qty,
                            B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6
                            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 (select wo_code,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty from  TK_Wrk_Step where (laborbad_qty+materielbad_qty)>0 group by wo_code) S on A.wo_code=S.wo_code
@@ -1053,6 +1056,305 @@
            return mes;
        }
        #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,(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++)
                    {
                        //修改工单表
                        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)
@@ -1419,7 +1721,8 @@
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.torg_name as wkshp_name,
                            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.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,
                            B.priuserdefnvc1,B.priuserdefnvc2,B.priuserdefnvc3,B.priuserdefnvc4,B.priuserdefnvc5,B.priuserdefnvc6
                            from TK_Wrk_Man A
                            left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code
                            left join TMateriel_Info B on A.materiel_code=B.partcode
@@ -1569,7 +1872,8 @@
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.id,A.status,B.wkshp_code,T.torg_name as wkshp_name,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date,
                        M.priuserdefnvc1,M.priuserdefnvc2,M.priuserdefnvc3,M.priuserdefnvc4,M.priuserdefnvc5,M.priuserdefnvc6
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
                        left join TMateriel_Info M on B.materiel_code=M.partcode
@@ -1673,7 +1977,8 @@
                sql = @"select A.id,A.status,B.wkshp_code,T.torg_name as wkshp_name,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,
                        (select isnull(sum(fqty),0) as fqty   from TK_Wrk_OutRecord where wo_code=A.wo_code and step_code=A.step_code and style='F') as fqty,
                        A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
                        A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date,
                        M.priuserdefnvc1,M.priuserdefnvc2,M.priuserdefnvc3,M.priuserdefnvc4,M.priuserdefnvc5,M.priuserdefnvc6
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
                        left join TMateriel_Info M on B.materiel_code=M.partcode
@@ -1774,7 +2079,8 @@
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.id,B.wkshp_code,T.torg_name as wkshp_name,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date,
                        M.priuserdefnvc1,M.priuserdefnvc2,M.priuserdefnvc3,M.priuserdefnvc4,M.priuserdefnvc5,M.priuserdefnvc6
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
                        left join TMateriel_Info M on B.materiel_code=M.partcode
@@ -1811,7 +2117,7 @@
            {
                //1.根据工单+工序查找当前工序是否首道工序
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.status,
                        A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,A.isbott,A.isend
                        A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,A.isbott,A.isend
                        from TK_Wrk_Step A
                        left join  TStep T on A.step_code=T.stepcode
                        left join  TK_Wrk_Man M on A.wo_code=M.wo_code
@@ -1941,7 +2247,7 @@
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser,string payrate, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
        {
            var sql = "";
            decimal ngqty = 0;
@@ -2038,8 +2344,8 @@
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
                    //写入子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,payrate,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@payrate,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
@@ -2047,6 +2353,7 @@
                        {
                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                            eqp_code = eqpcode,
                            payrate= payrate,
                            report_person = reportuser,
                            report_date = date,
                            report_qty = reportqty,
@@ -2082,8 +2389,8 @@
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
                    //写入子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,payrate,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@payrate,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
@@ -2091,6 +2398,7 @@
                        {
                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                            eqp_code = eqpcode,
                            payrate= payrate,
                            report_person = reportuser,
                            report_date = date,
                            report_qty = reportqty,
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; }
    }
}