1.人员基础资料、班组基础资料接口
2.报工调整查询接口、报工调整获取不良记录接口、报工调整提交接口
已添加1个文件
已修改9个文件
1250 ■■■■ 文件已修改
VueWebCoreApi/Controllers/GeneralBasicDataController.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/SystemSettingController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 825 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/AppLableBarCode.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/ScanStartReport.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/GeneralBasicDataController.cs
@@ -73,6 +73,34 @@
        }
        #endregion
        #region[人员基础资料]
        /// <summary>
        /// äººå‘˜åŸºç¡€èµ„æ–™
        /// </summary>
        /// <returns></returns>
        [Route(template: "PersonPermissions")]
        [HttpGet]
        public JsonResult PersonPermissions()
        {
            mes = GeneralBasicDataBLL.PersonPermissions();
            return Json(mes);
        }
        #endregion
        #region[班组查找人员基础资料]
        /// <summary>
        /// ç­ç»„查找人员基础资料
        /// </summary>
        /// <param name="groupcode">班组编码</param>
        /// <returns></returns>
        [Route(template: "GroupsPersonPermissions")]
        [HttpGet]
        public JsonResult GroupsPersonPermissions(string groupcode)
        {
            mes = GeneralBasicDataBLL.GroupsPersonPermissions(groupcode);
            return Json(mes);
        }
        #endregion
        #region[按钮基础资料]
        /// <summary>
@@ -131,6 +159,15 @@
        }
        #endregion
        #region[设备基础资料]
        [Route(template: "EqpPermissions")]
        [HttpGet]
        public JsonResult EqpPermissions()
        {
            mes = GeneralBasicDataBLL.EqpPermissions();
            return Json(mes);
        }
        #endregion
        #region[仓库基础资料]
        /// <summary>
@@ -160,5 +197,28 @@
        }
        #endregion
        #region[缺陷基础资料]
        [Route(template: "DefectPermissions")]
        [HttpGet]
        public JsonResult DefectPermissions()
        {
            mes = GeneralBasicDataBLL.DefectPermissions();
            return Json(mes);
        }
        #endregion
        #region[往来单位基础资料]
        /// <summary>
        /// å¾€æ¥å•位基础资料
        /// </summary>
        /// <returns></returns>
        [Route(template: "CustomerPermissions")]
        [HttpGet]
        public JsonResult CustomerPermissions()
        {
            mes = GeneralBasicDataBLL.CustomerPermissions();
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/Controllers/SystemSettingController.cs
@@ -142,9 +142,9 @@
        }
        #endregion
        #region[生成物料标签条码(每次获取最新,App可使用)]
        #region[生成系统条码(自定义),生成物料标签条码(每次获取最新,App可使用)]
        /// <summary>
        /// ç”Ÿæˆç‰©æ–™æ ‡ç­¾æ¡ç (每次获取最新,App可使用)
        /// ç”Ÿæˆç³»ç»Ÿæ¡ç (自定义),生成物料标签条码(每次获取最新,App可使用)
        /// </summary>
        /// <param name="rightcode">功能编码</param>
        /// <param name="partcode">物料编码</param>
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -8,6 +8,7 @@
using System.Threading.Tasks;
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.UpdateReport;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
@@ -550,5 +551,77 @@
            return Json(mes);
        }
        #endregion
        #region[生产执行,报工调整列表数据查询接口]
        /// <summary>
        /// ç”Ÿäº§æ‰§è¡Œ,报工调整列表数据查询接口
        /// </summary>
        /// <param name="wo_code">工单编号</param>
        /// <param name="partnumber">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
        /// <param name="reportuser">报工人员</param>
        /// <param name="reportdate">报工时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepVerifySearch")]
        [HttpGet]
        public JsonResult MesOrderStepVerifySearch(string wo_code = null, string partnumber = null, string partname = null, string partspec = null, string reportuser = null, string reportdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            string reportdateopendate = "";  //报工开始时间
            string reportdateclosedate = "";    //报工结束时间
            if (reportdate != "" && reportdate != null)
            {
                reportdateopendate = reportdate.Split('~')[0].ToString();
                reportdateclosedate = reportdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = WorkOrderBLL.MesOrderStepVerifySearch(wo_code, partnumber, partname, partspec, reportuser, reportdateopendate, reportdateclosedate, startNum, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[生产执行,报工调整获取选定报工记录的不良数据]
        /// <summary>
        /// ç”Ÿäº§æ‰§è¡Œ,报工调整获取选定报工记录的不良数据
        /// </summary>
        /// <param name="wo_code">工单号</param>
        /// <param name="step_code">工序号</param>
        /// <param name="step_type">工序类型(自制:Z å¤–协:W)</param>
        /// <param name="isbott">是否首道工序</param>
        /// <param name="isend">是否末道工序</param>
        /// <param name="id">报工主id</param>
        /// <param name="sbid">报工子id</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepModelSearch")]
        [HttpGet]
        public JsonResult MesOrderStepModelSearch(string wo_code,string step_code,string step_type,string isbott,string isend,string id, string sbid)
        {
            mes = WorkOrderBLL.MesOrderStepModelSearch(wo_code, step_code, step_type, isbott, isend,id,sbid);
            return Json(mes);
        }
        #endregion
        #region[生产执行,报工调整数据提交]
        /// <summary>
        /// ç”Ÿäº§æ‰§è¡Œ,报工调整数据提交
        /// </summary>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepUpdateSeave")]
        [HttpPost]
        public JsonResult MesOrderStepUpdateSeave(List<UpdateProductReport> json)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = WorkOrderBLL.MesOrderStepUpdateSeave(us, json);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
@@ -38,6 +38,20 @@
        }
        #endregion
        #region[人员基础资料]
        public static ToMessage PersonPermissions()
        {
            return GeneralBasicDataDAL.PersonPermissions();
        }
        #endregion
        #region[班组查找人员基础资料]
        public static ToMessage GroupsPersonPermissions(string groupcode)
        {
            return GeneralBasicDataDAL.GroupsPersonPermissions(groupcode);
        }
        #endregion
        #region[按钮基础资料]
        public static ToMessage ButtonData()
        {
@@ -67,6 +81,13 @@
        }
        #endregion
        #region[设备基础资料]
        public static ToMessage EqpPermissions()
        {
            return GeneralBasicDataDAL.EqpPermissions();
        }
        #endregion
        #region[仓库基础资料]
        public static ToMessage WareHouse()
        {
@@ -80,5 +101,19 @@
            return GeneralBasicDataDAL.StepData();
        }
        #endregion
        #region[缺陷基础资料]
        public static ToMessage DefectPermissions()
        {
            return GeneralBasicDataDAL.DefectPermissions();
        }
        #endregion
        #region[往来单位基础资料]
        public static ToMessage CustomerPermissions()
        {
            return GeneralBasicDataDAL.CustomerPermissions();
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -5,6 +5,7 @@
using System.Threading.Tasks;
using VueWebCoreApi.DLL.DAL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.UpdateReport;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
@@ -169,5 +170,27 @@
            return WorkOrderDAL.EditOrderNgStepSeave(json, us);
        }
        #endregion
        #region[生产执行,报工调整数据查询接口]
        public static ToMessage MesOrderStepVerifySearch(string wo_code, string partnumber, string partname, string partspec, string reportuser, string reportdateopendate, string reportdateclosedate, int startNum, int endNum, string prop, string order)
        {
            return WorkOrderDAL.MesOrderStepVerifySearch(wo_code, partnumber, partname, partspec, reportuser, reportdateopendate, reportdateclosedate, startNum, endNum, prop, order);
        }
        #endregion
        #region[生产执行,报工调整获取选定报工记录的不良数据]
        public static ToMessage MesOrderStepModelSearch(string wo_code, string step_code, string step_type, string isbott, string isend, string id, string sbid)
        {
            return WorkOrderDAL.MesOrderStepModelSearch(wo_code, step_code, step_type, isbott, isend, id, sbid);
        }
        #endregion
        #region[生产执行,报工调整数据提交]
        public static ToMessage MesOrderStepUpdateSeave(User us, List<UpdateProductReport> json)
        {
            return WorkOrderDAL.MesOrderStepUpdateSeave(us,json);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
@@ -122,6 +122,59 @@
        }
        #endregion
        #region[人员基础资料]
        public static ToMessage PersonPermissions()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                sql = @"select usercode,username from TUser where  status='Y'";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                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 GroupsPersonPermissions(string groupcode)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select stuff((select ',' + usercode
                        from (select usercode from TUser
                        where ',' + group_code + ',' LIKE @groupcode and status='Y') as A
                        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS usercode_list";
                dynamicParams.Add("@groupcode", "%," + groupcode + ",%");
                var data = DapperHelper.selectdata(sql, dynamicParams);
                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 ButtonData()
        {
@@ -260,6 +313,31 @@
        }
        #endregion
        #region[设备基础资料]
        public static ToMessage EqpPermissions()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                sql = @"select code,name from TEqpInfo where  enable='Y'";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                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 WareHouse()
        {
@@ -310,5 +388,53 @@
        }
        #endregion
        #region[缺陷基础资料]
        public static ToMessage DefectPermissions()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                sql = @"select code,name from TDefect";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                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 CustomerPermissions()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select code,name from TCustomer where status='0'";
                var data = DapperHelper.selectdata(sql, dynamicParams);
                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/WorkOrderDAL.cs
@@ -7,6 +7,7 @@
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.UpdateReport;
using VueWebCoreApi.Models.WorkData;
using VueWebCoreApi.Tools;
@@ -1142,7 +1143,7 @@
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    if (ordercode != "" && stepcode == null) //工单号不为空,工序号为空
                    if (ordercode != "" && (stepcode == null || stepcode == "")) //工单号不为空,工序号为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
@@ -1189,7 +1190,7 @@
                    dynamicParams.Add("@partspec", partspec);
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.status,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                sql = @"select A.id,A.status,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
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
@@ -1197,22 +1198,11 @@
                        left join TStep S on A.step_code=S.stepcode
                        where A.status in('ALLO','START') and S.flwtype='Z'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                if (data.ToList().Count > 0)
                {
                    mes.code = "200";
                    mes.count = total;
                    mes.Message = "查询成功!";
                    mes.data = data.ToList();
                    return mes;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无可执行的生产任务,任务已完成或已关闭!";
                    mes.data = null;
                    return mes;
                }
                mes.code = "200";
                mes.count = total;
                mes.Message = "查询成功!";
                mes.data = data.ToList();
                return mes;
            }
            catch (Exception e)
            {
@@ -1249,7 +1239,7 @@
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    if (ordercode != "" && stepcode == null) //工单号不为空,工序号为空
                    if (ordercode != "" && (stepcode == null || stepcode == "")) //工单号不为空,工序号为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
@@ -1296,30 +1286,22 @@
                    dynamicParams.Add("@partspec", partspec);
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.status,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,A.plan_startdate,A.plan_enddate,B.lm_date
                sql = @"select A.id,A.status,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
                        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
                        left join TStep S on A.step_code=S.stepcode
                        where A.status in('ALLO','START') and S.flwtype='W'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                if (data.ToList().Count > 0)
                {
                    mes.code = "200";
                    mes.count = total;
                    mes.Message = "查询成功!";
                    mes.data = data.ToList();
                    return mes;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无可执行的生产任务,任务已完成或已关闭!";
                    mes.data = null;
                    return mes;
                }
                mes.code = "200";
                mes.count = total;
                mes.Message = "查询成功!";
                mes.data = data.ToList();
                return mes;
            }
            catch (Exception e)
            {
@@ -1356,7 +1338,7 @@
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    if (ordercode != "" && stepcode == null) //工单号不为空,工序号为空
                    if (ordercode != "" && (stepcode == null || stepcode == "")) //工单号不为空,工序号为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
@@ -1401,7 +1383,7 @@
                    dynamicParams.Add("@partspec", partspec);
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
                sql = @"select A.id,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
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
@@ -1409,22 +1391,11 @@
                        left join TStep S on A.step_code=S.stepcode
                        where A.status in('ALLO','START') and A.ng_qty>0  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                if (data.ToList().Count > 0)
                {
                    mes.code = "200";
                    mes.count = total;
                    mes.Message = "查询成功!";
                    mes.data = data.ToList();
                    return mes;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无可执行的生产任务,任务已完成或已关闭!";
                    mes.data = null;
                    return mes;
                }
                mes.code = "200";
                mes.count = total;
                mes.Message = "查询成功!";
                mes.data = data.ToList();
                return mes;
            }
            catch (Exception e)
            {
@@ -1545,7 +1516,7 @@
                        mes = ScanStartReport.ZZEncodingSeach(wocode, stepcode);
                        break;
                    case "WX":
                        mes = ScanStartReport.WXEncodingSeach(SelectType, stepcode, stepcode);
                        mes = ScanStartReport.WXEncodingSeach(SelectType, wocode, stepcode);
                        break;
                    default:
                        break;
@@ -1563,18 +1534,19 @@
        #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 taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
        {
            var sql = "";
            decimal ngqty = 0;
            string[] arra1 = new string[] { };
            List<object> list0 = new List<object>();
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                //获取报工人员、分配比例
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
                //JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
                //判断是否有不良数据
                var groupedItems = defectobjs.GroupBy(item => item.defect_code) // æŒ‰ç¼–码code分组
                        .Select(group => new { defect_code = group.Key, badqty = group.Sum(item => Convert.ToDecimal(item.badqty)) }).ToList(); // æ±‡æ€»ä¸è‰¯æ•°é‡
@@ -1594,22 +1566,36 @@
                dynamicParams.Add("@step_code", stepcode);
                dynamicParams.Add("@eqpcode", eqpcode);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count <= 0)
                if (data0.Rows.Count <= 0)
                {
                    //写入开报工记录表
                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,open_person,open_time,task_qty,start_qty,style,lm_user,lm_date) 
                                values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@username,@opentime,@taskqty,@startqty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price=stepprice, eqpcode = eqpcode, partcode = partcode, username = us.usercode, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = us.usercode, lm_date = date } });
                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, username = us.usercode, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = us.usercode, lm_date = date } });
                    //回写工单工序表状态为START: å¼€å·¥
                    sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                    //回写工单工序表状态为已开工
                    sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                    //回写工单表状态为: å¼€å·¥ï¼šSTART 
                    sql = @"update TK_Wrk_Man set status='START'  where wo_code=@mesordercode";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
                    bool st = DapperHelper.DoTransaction(list0);
                    if (st)
                    {
                        //写入操作记录表
                        LogHelper.DbOperateLog(us.usercode, "开工", "开工了工单:" + mesordercode + "工序:" + stepcode, 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;
                    }
                }
                //判断是否有报工记录(有:修改 æ— ï¼šæ–°å¢ž)
@@ -1642,34 +1628,30 @@
                    //写入开报工记录表
                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode) 
                                values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
                    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 } });
                    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 } });
                    //写入子表
                    for (int i = 0; i < arra.Count; i++)
                    {
                        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)
                    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)";
                        list.Add(new
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            str = sql,
                            parm = new
                            {
                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                                eqp_code = eqpcode,
                                report_person = arra[i]["usercode"].ToString(),
                                report_date = date,
                                report_qty = reportqty,
                                reckway = reckway,
                                usergroup_code = usergroupcode,
                                ratio = decimal.Parse(arra[i]["ratio"].ToString()),
                                ng_qty = ngqty,
                                style = "B",
                                lm_user = us.usercode,
                                lm_date = date
                            }
                        });
                    }
                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                            eqp_code = eqpcode,
                            report_person = reportuser,
                            report_date = date,
                            report_qty = reportqty,
                            reckway = reckway,
                            usergroup_code = usergroupcode,
                            ratio = 0, //分配比例
                            ng_qty = ngqty,
                            style = "B",
                            lm_user = us.usercode,
                            lm_date = date
                        }
                    });
                    if (groupedItems.Count > 0)
                    {
                        //写入缺陷记录表
@@ -1690,34 +1672,30 @@
                    //写入开报工记录表
                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode) 
                                values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
                    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 } });
                    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 } });
                    //写入子表
                    for (int i = 0; i < arra.Count; i++)
                    {
                        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)
                    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)";
                        list.Add(new
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            str = sql,
                            parm = new
                            {
                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                                eqp_code = eqpcode,
                                report_person = arra[i]["usercode"].ToString(),
                                report_date = date,
                                report_qty = reportqty,
                                reckway = reckway,
                                usergroup_code = usergroupcode,
                                ratio = decimal.Parse(arra[i]["ratio"].ToString()),
                                ng_qty = ngqty,
                                style = "B",
                                lm_user = us.usercode,
                                lm_date = date
                            }
                        });
                    }
                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                            eqp_code = eqpcode,
                            report_person = reportuser,
                            report_date = date,
                            report_qty = reportqty,
                            reckway = reckway,
                            usergroup_code = usergroupcode,
                            ratio = 0, //分配比例
                            ng_qty = ngqty,
                            style = "B",
                            lm_user = us.usercode,
                            lm_date = date
                        }
                    });
                    if (groupedItems.Count > 0)
                    {
                        //写入缺陷记录表
@@ -1747,6 +1725,8 @@
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "报工", "报工了工单:" + mesordercode + "工序:" + stepcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
@@ -1792,7 +1772,7 @@
                    //修改发料记录
                    sql = @"update TK_Wrk_OutRecord set fqty=fqty+@fqty,lm_user=@username,lm_date=@CreateDate
                             where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='F'";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, fqty = decimal.Parse(fqty), username =us.usercode, CreateDate = date } });
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, fqty = decimal.Parse(fqty), username = us.usercode, CreateDate = date } });
                    //写入子表
                    sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,out_person,out_time,fqty,style,lm_user,lm_date) 
                                values(@m_id,@wx_code,@out_person,@out_time,@fqty,@style,@lm_user,@lm_date)";
@@ -1824,6 +1804,8 @@
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "外协发料", "外协发料工单:" + mesordercode + "工序:" + stepcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "发料成功!";
@@ -2001,6 +1983,8 @@
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "外协收料", "外协收料工单:" + mesordercode + "工序:" + stepcode, us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "收成功!";
@@ -2032,7 +2016,7 @@
            string[] arra1 = new string[] { };
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            decimal sumrepair_qty = 0, sumlaborbad_qty = 0,summaterielbad_qty=0;  //累计维修数量、累计工废数量、累计料废数量
            decimal sumrepair_qty = 0, sumlaborbad_qty = 0, summaterielbad_qty = 0;  //累计维修数量、累计工废数量、累计料废数量
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
@@ -2076,7 +2060,7 @@
                            }
                        });
                        //回写缺陷记录表的待处理数量
                        sql = @"update CSR_WorkRecord_Defect set defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@laborbad_qty-@materielbad_qty, defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                        where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
                        list.Add(new
                        {
@@ -2091,28 +2075,56 @@
                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
                            }
                        });
                        //写入报工缺陷处理记录表
                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date)
                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
                        list.Add(new
                        //判断缺陷记录处理表是否存在记录
                        sql = @"select *  from CSR_WorkRecord_DefectHandle where wo_code=@wo_code and step_code=@step_code and  defect_id=@defect_id";
                        dynamicParams.Add("@wo_code", json.Data.Rows[i]["WO_CODE"].ToString());
                        dynamicParams.Add("@step_code", json.Data.Rows[i]["STEP_CODE"].ToString());
                        dynamicParams.Add("@defect_id", json.Data.Rows[i]["ID"].ToString());
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        if (data.Rows.Count <= 0)
                        {
                            str = sql,
                            parm = new
                            //写入报工缺陷处理记录表
                            sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date)
                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                stepseq = json.Data.Rows[i]["SEQ"].ToString(),
                                stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
                                defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
                                style = "B",
                                lm_user = us.usercode,
                                lm_date = date
                            }
                        });
                                str = sql,
                                parm = new
                                {
                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                    partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                    stepseq = json.Data.Rows[i]["SEQ"].ToString(),
                                    stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
                                    defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
                                    style = "B",
                                    lm_user = us.usercode,
                                    lm_date = date
                                }
                            });
                        }
                        else
                        {
                            //更新报工缺陷处理记录表
                            sql = @"update CSR_WorkRecord_DefectHandle set repair_qty=repair_qty+@repair_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                                    where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                    step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString())
                                }
                            });
                        }
                        sumrepair_qty = sumrepair_qty + decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString());
                        sumlaborbad_qty = sumlaborbad_qty + decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString());
@@ -2152,7 +2164,7 @@
                            }
                        });
                        //回写缺陷记录表的待处理数量
                        sql = @"update CSR_WorkRecord_Defect set defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@laborbad_qty-@materielbad_qty,defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                        where wo_code=@wo_code and step_code=@step_code and id=@id and style='S'";
                        list.Add(new
                        {
@@ -2167,28 +2179,56 @@
                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
                            }
                        });
                        //写入报工缺陷处理记录表
                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date)
                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
                        list.Add(new
                        //判断缺陷记录处理表是否存在记录
                        sql = @"select *  from CSR_WorkRecord_DefectHandle where wo_code=@wo_code and step_code=@step_code and  defect_id=@defect_id";
                        dynamicParams.Add("@wo_code", json.Data.Rows[i]["WO_CODE"].ToString());
                        dynamicParams.Add("@step_code", json.Data.Rows[i]["STEP_CODE"].ToString());
                        dynamicParams.Add("@defect_id", json.Data.Rows[i]["ID"].ToString());
                        var data = DapperHelper.selectdata(sql, dynamicParams);
                        if (data.Rows.Count <= 0)
                        {
                            str = sql,
                            parm = new
                            //写入报工缺陷处理记录表
                            sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date)
                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new
                            {
                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                stepseq = json.Data.Rows[i]["SEQ"].ToString(),
                                stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
                                defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
                                style = "S",
                                lm_user = us.usercode,
                                lm_date = date
                            }
                        });
                                str = sql,
                                parm = new
                                {
                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                    partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                    stepseq = json.Data.Rows[i]["SEQ"].ToString(),
                                    stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
                                    defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
                                    style = "S",
                                    lm_user = us.usercode,
                                    lm_date = date
                                }
                            });
                        }
                        else
                        {
                            //更新报工缺陷处理记录表
                            sql = @"update CSR_WorkRecord_DefectHandle set repair_qty=repair_qty+@repair_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                                    where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                    step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString())
                                }
                            });
                        }
                        sumrepair_qty = sumrepair_qty + decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString());
                        sumlaborbad_qty = sumlaborbad_qty + decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString());
                        summaterielbad_qty = summaterielbad_qty + decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString());
@@ -2207,12 +2247,14 @@
                        stepcode = json.Data.Rows[0]["STEP_CODE"].ToString(),
                        sumrepair_qty = sumrepair_qty,
                        sumlaborbad_qty = sumlaborbad_qty,
                        summaterielbad_qty= summaterielbad_qty
                        summaterielbad_qty = summaterielbad_qty
                    }
                });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "不良处理", "工单:" + json.Data.Rows[0]["WO_CODE"].ToString() + "工序:" + json.Data.Rows[0]["STEP_CODE"].ToString(), us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
@@ -2236,5 +2278,472 @@
            return mes;
        }
        #endregion
        #region[生产执行,报工调整数据查询接口]
        public static ToMessage MesOrderStepVerifySearch(string wo_code, string partnumber, string partname, string partspec, string reportuser, string reportdateopendate, string reportdateclosedate, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wo_code != "" && wo_code != null)
                {
                    search += "and AA.wo_code like '%'+@wo_code+'%' ";
                    dynamicParams.Add("@wo_code", wo_code);
                }
                if (partnumber != "" && partnumber != null)
                {
                    search += "and AA.partnumber like '%'+@partnumber+'%' ";
                    dynamicParams.Add("@partnumber", partnumber);
                }
                if (partname != "" && partname != null)
                {
                    search += "and AA.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and AA.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (reportuser != "" && reportuser != null)
                {
                    search += "and AA.usercode like '%'+@reportuser+'%' ";
                    dynamicParams.Add("@reportuser", reportuser);
                }
                if (reportdateopendate != "" && reportdateopendate != null)
                {
                    search += "and AA.report_date between @reportdateopendate and @reportdateclosedate ";
                    dynamicParams.Add("@reportdateopendate", reportdateopendate + " 00:00:00");
                    dynamicParams.Add("@reportdateclosedate", reportdateclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定自制报工外协收料数据--------------
                var total = 0; //总条数
                var sql = @" select *  from(
                             select A.id,B.id as sbid,A.wo_code,A.materiel_code as partnumber,P.partname,P.partspec,A.task_qty,M.wkshp_code,T.torg_name as wkshp_name,A.eqp_code,E.name as eqp_name,
                             A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,k.isbott as first_choke,k.isend as last_choke,A.step_price,B.reckway,B.usergroup_code,G.usergroupname as usergroup_name,
                             B.report_person as usercode,
                              STUFF((SELECT ',' + U.username
                                     FROM TUser U
                                     WHERE CHARINDEX(',' + U.usercode + ',', ',' + B.report_person + ',') > 0
                                     FOR XML PATH('')), 1, 1, '') AS username,
                             B.report_date,B.report_qty,B.ng_qty,B.laborbad_qty,B.materielbad_qty
                             from TK_Wrk_Record A
                             inner join TK_Wrk_RecordSub 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 T on M.wkshp_code=T.torg_code
                             left join TEqpInfo E on A.eqp_code=E.code
                             left join TGroup G on G.usergroupcode=B.usergroup_code
                             where A.style='B' and B.style='B' and M.status<>'CLOSED' and B.verify='N'
                             union all
                             select A.id,B.id as sbid,A.wo_code,A.materiel_code as partnumber,P.partname,P.partspec,M.plan_qty as task_qty,M.wkshp_code,T.torg_name as wkshp_name,A.wx_code as eqp_code,E.name as eqp_name,
                             A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,k.isbott as first_choke,k.isend as last_choke,A.step_price,'person' as reckway,'' as usergroup_code,'' as usergroup_name,
                             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,B.sqty as report_qty,B.ng_qty,B.laborbad_qty,B.materielbad_qty
                             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 T on M.wkshp_code = T.torg_code
                             left join TCustomer E on A.wx_code = E.code
                             where A.style = 'S' and B.style = 'S' and M.status<>'CLOSED' and B.verify='N'
                             ) as AA where" + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产执行,报工调整获取选定报工记录的不良数据]
        public static ToMessage MesOrderStepModelSearch(string wo_code, string step_code, string step_type, string isbott, string isend, string id, string sbid)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                if (step_type == "Z")
                {
                    sql = @"select D.id,D.record_id,D.defect_code,
                            STUFF((SELECT ',' + F.name
                                    FROM TDefect F
                                    WHERE CHARINDEX(',' + F.code + ',', ',' + D.defect_code + ',') > 0
                                    FOR XML PATH('')), 1, 1, '') AS defect_name,
                            D.defect_qty,laborbad_qty,materielbad_qty
                            from CSR_WorkRecord_Defect D
                            where wo_code=@wo_code and step_code=@step_code and record_id=@id";
                    dynamicParams.Add("@wo_code", wo_code);
                    dynamicParams.Add("@step_code", step_code);
                    dynamicParams.Add("@id", id);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                if (step_type == "W")
                {
                    sql = @"select D.id,D.record_id,D.defect_code,
                            STUFF((SELECT ',' + F.name
                                    FROM TDefect F
                                    WHERE CHARINDEX(',' + F.code + ',', ',' + D.defect_code + ',') > 0
                                    FOR XML PATH('')), 1, 1, '') AS defect_name,
                            D.defect_qty,laborbad_qty,materielbad_qty
                            from CSR_WorkRecord_Defect D
                            where wo_code=@wo_code and step_code=@step_code and record_id=@id";
                    dynamicParams.Add("@wo_code", wo_code);
                    dynamicParams.Add("@step_code", step_code);
                    dynamicParams.Add("@id", id);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    mes.code = "200";
                    mes.count = 0;
                    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 MesOrderStepUpdateSeave(User us, List<UpdateProductReport> json)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                list.Clear();
                //判断当前工序是自制工序还是外协工序
                if (json[0].flw_type.ToString() == "Z")//自制工序
                {
                    //获取此次报工调整提交的数据(合格数量、不良数量、工废数量、料废数量)
                    decimal this_reportqty = decimal.Parse(json[0].report_qty.ToString()); //报工数量(合格)
                    decimal this_ngqty = json[0].children.Sum(item => decimal.Parse(item.ng_qty));//不良数量汇总
                    decimal this_laborbadqty = json[0].children.Sum(item => decimal.Parse(item.laborbad_qty));//工废数量汇总
                    decimal this_materielbadqty = json[0].children.Sum(item => decimal.Parse(item.materielbad_qty));//料废数量汇总
                    decimal this_ng_dvalue = json[0].children.Sum(item => decimal.Parse(item.ng_dvalue));//不良数量差值汇总
                    decimal this_laborbad_dvalue = json[0].children.Sum(item => decimal.Parse(item.laborbad_dvalue));//工废数量差值汇总
                    decimal this_materielbad_dvalue = json[0].children.Sum(item => decimal.Parse(item.materielbad_dvalue));//料废数量差值汇总
                    //首道工序的报工
                    if (json[0].first_choke == "Y")
                    {
                        //查询当前首道报工工序非此次报工:总报工数量、总不良数量、总工废数量、总料废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@id", json[0].id);
                        dynamicParams.Add("@step_code", json[0].step_code);
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //当前工序非本次报工总数
                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //当前工序非本次报工总不良数
                        decimal notthis_laborbadqty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //当前工序非本次报工总工废数
                        decimal notthis_materielbadqty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //当前工序非本次报工总料废数
                        //判断:当前工序报工记录:本次报工数量+本次不良数量+本次工废数量+本次料废数量+当前工序非本次报工总数+当前工序非本次不良总数+当前工序非本次工废总数+当前工序非本次料废总数>工单任务数量
                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbadqty + notthis_materielbadqty;
                        if (updatereportsumqty > decimal.Parse(json[0].task_qty.ToString()))
                        {
                            mes.code = "300";
                            mes.count = 0;
                            mes.Message = "自制首道工序修改报工总数量:【" + updatereportsumqty + "】不能大于工单任务数量:【" + json[0].task_qty.ToString() + "】!";
                            mes.data = null;
                            return mes;
                        }
                        //查询当前工序下道工序:总报工数量、总不良数量、总报废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq+1";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@step_seq", json[0].step_seq);
                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
                        if (dt0.Rows.Count > 0)
                        {
                            //判断当前工序:报工总数数量+不良总数数量+工废总数量+料废总数量<下道工序报工总数量+下道工序不良总数量+下道工序工废总数量+下道工序料废总数量
                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //下道工序报工总数量
                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //下道工序不良总数量
                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //下道工序工废总数量
                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());  //下道工序料废总数量
                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
                            //判断(当前非本次报工总合格数+本次报工调整合格数)<下道工序报工总数
                            if ((notthis_reportqty + decimal.Parse(json[0].report_qty) < last_updatereportsumqty))
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "自制首道工序修改报工总合格数量:【" + (notthis_reportqty + decimal.Parse(json[0].report_qty)) + "】不能小于下道工序报工总数量:【" + last_updatereportsumqty + "】,请输入合法数值或先修改下道工序报工数量!";
                                mes.data = null;
                                return mes;
                            }
                        }
                    }
                    //末道工序的报工
                    else if (json[0].last_choke == "Y")
                    {
                        //查询当前末道报工工序非此次报工:总报工数量、总不良数量、总工废数量、总料废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@id", json[0].id);
                        dynamicParams.Add("@step_code", json[0].step_code);
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //当前末道工序非本次报工总数
                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //当前末道工序非本次报工总数
                        decimal notthis_laborbad_qty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //当前末道工序非本次报工工废总数
                        decimal notthis_materielbad_qty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //当前末道工序非本次报工料废总数
                        //获取当前末道工序报工总数量:本次修改报工数量+本次修改不良数量+本次修改工废数量+本次修改报工料废数量+当前末道工序非本次报工总数+当前末道工序非本次不良总数+当前末道工序非本次工废总数+当前末道工序非本次料废总数
                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbad_qty + notthis_materielbad_qty;
                        //查询当前末道工序上道工序:总报工数量、总不良数量、总报废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq-1";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@step_seq", json[0].step_seq);
                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
                        if (dt0.Rows.Count > 0)
                        {
                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //上道工序报工总数量
                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //上道工序不良总数量
                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //上道工序工废总数量
                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());  //上道工序料废总数量
                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
                            //判断:当前末道工序报工记录:当前末道工序报工总数量>上道工序报工合格总数
                            if (updatereportsumqty > last_reportqty)
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "自制末道工序修改报工总数量:【" + updatereportsumqty + "】不能大于上道工序报工总合格数量:【" + last_reportqty + "】,请输入合法数值或先修改上道工序报工数量!";
                                mes.data = null;
                                return mes;
                            }
                        }
                    }
                    else //中间工序的报工
                    {
                       //查询当前中间报工工序非此次报工:总报工数量、总不良数量、总报废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                    from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@id", json[0].id);
                        dynamicParams.Add("@step_code", json[0].step_code);
                        var dt = DapperHelper.selectdata(sql, dynamicParams);
                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //当前工序非本次报工总数
                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //当前工序非本次报工总数
                        decimal notthis_laborbad_qty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //当前工序非本次报工工费总数
                        decimal notthis_materielbad_qty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //当前工序非本次报工料废总数
                        //获取当前中间工序报工总数量:本次修改报工数量+本次修改不良数量+本次修改工废数量+本次修改料废总数+当前工序非本次报工总数+当前工序非本次不良总数+当前工序非本次工废总数+当前工序非本次料废总数
                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbad_qty + notthis_materielbad_qty;
                        //查询当前工序上道工序:总报工数量、总不良数量、总工废数量、总料废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq-1";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@step_seq", json[0].step_seq);
                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
                        if (dt0.Rows.Count > 0)
                        {
                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //上道工序报工总合格数量
                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //上道工序不良总数量
                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //上道工序工废总数量
                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());//上道工序料废总数量
                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
                            //判断:当前工序报工记录:当前工序报工总数>上道工序报工总合格数
                            if (updatereportsumqty > last_reportqty)
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "自制工序修改报工总数量:【" + updatereportsumqty + "】不能大于上道工序报工总合格数量:【" + last_reportqty + "】,请输入合法数值或先修改上道工序报工数量!";
                                mes.data = null;
                                return mes;
                            }
                        }
                        //查询当前工序下道工序:总报工数量、总不良数量、总报废数量
                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty
                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq+1";
                        dynamicParams.Add("@wo_code", json[0].wo_code);
                        dynamicParams.Add("@step_seq", json[0].step_seq);
                        var dt1 = DapperHelper.selectdata(sql, dynamicParams);
                        if (dt1.Rows.Count > 0)
                        {
                            decimal last_reportqty = decimal.Parse(dt1.Rows[0]["good_qty"].ToString());  //下道工序报工总数量
                            decimal last_ngqty = decimal.Parse(dt1.Rows[0]["ng_qty"].ToString());  //下道工序不良总数量
                            decimal last_laborbad_qty = decimal.Parse(dt1.Rows[0]["laborbad_qty"].ToString());  //下道工序工废总数量
                            decimal last_materielbad_qty = decimal.Parse(dt1.Rows[0]["materielbad_qty"].ToString());  //下道工序料废总数量
                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
                            //判断:当前工序报工记录:当前工序报工总数<下道工序报工总数(合格+不良+工废+料废)
                            //判断(当前非本次报工总合格数+本次报工调整合格数)<下道工序报工总数
                            if ((notthis_reportqty + decimal.Parse(json[0].report_qty)< last_updatereportsumqty))
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "自制工序修改报工总合格数量:【" + (notthis_reportqty + decimal.Parse(json[0].report_qty)) + "】不能小于下道工序报工总数量:【" + last_updatereportsumqty + "】,请输入合法数值或先修改下道工序报工数量!";
                                mes.data = null;
                                return mes;
                            }
                        }
                    }
                    ///////////////////////////////修改报工//////////////////////////////
                    //回写对应的报工记录子表合格数量、不良数量、报废数量
                    sql = @"update TK_Wrk_RecordSub set report_qty=report_qty+@repair_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty,
                            updatereportuser=@updatereportuser,updatereportdate=@updatereportdate
                            where  m_id=@m_id and id=@id and style='B'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            m_id = int.Parse(json[0].id),
                            id = int.Parse(json[0].sbid),
                            repair_qty = decimal.Parse(json[0].report_dvalue),
                            ng_qty = this_ng_dvalue,
                            laborbad_qty = this_laborbad_dvalue,
                            materielbad_qty = this_materielbad_dvalue,
                            //bad_money = decimal.Parse(json[i].badmoney_dvalue),
                            updatereportuser = us.usercode,
                            updatereportdate = date
                        }
                    });
                    //回写对应的报工记录主表合格数量、不良数量、报废数量
                    sql = @"update TK_Wrk_Record set start_qty=start_qty+@good_qty, good_qty=good_qty+@good_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                            where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            good_qty = decimal.Parse(json[0].report_dvalue),
                            ng_qty = this_ng_dvalue,
                            laborbad_qty = this_laborbad_dvalue,
                            materielbad_qty = this_materielbad_dvalue,
                            wo_code = json[0].wo_code,
                            step_code = json[0].step_code,
                            id = int.Parse(json[0].id)
                        }
                    });
                    //回写工单工序表
                    sql = @"update TK_Wrk_Step set good_qty=good_qty+@good_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                            where wo_code=@wo_code and step_code=@step_code";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            good_qty = decimal.Parse(json[0].report_dvalue),
                            ng_qty = this_ng_dvalue,
                            laborbad_qty = this_laborbad_dvalue,
                            materielbad_qty = this_materielbad_dvalue,
                            wo_code = json[0].wo_code,
                            step_code = json[0].step_code
                        }
                    });
                    for (int i = 0; i < json[0].children.Count; i++)
                    {
                        //回写不良
                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty+@ng_qty,defect_pendqty=defect_pendqty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty,
                                updatereportuser=@updatereportuser,updatereportdate=@updatereportdate
                                where wo_code=@wo_code and step_code=@step_code and id=@ng_id and record_id=@record_id and style='B'";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                ng_qty = decimal.Parse(json[0].children[i].ng_dvalue),
                                laborbad_qty = decimal.Parse(json[0].children[i].laborbad_dvalue),
                                materielbad_qty = decimal.Parse(json[0].children[i].materielbad_dvalue),
                                wo_code = json[0].wo_code,
                                step_code = json[0].step_code,
                                ng_id = int.Parse(json[0].children[i].ng_id),
                                record_id = json[0].id,
                                updatereportuser = us.usercode,
                                updatereportdate = date
                            }
                        });
                        //回写不良处理
                        sql = @"update CSR_WorkRecord_DefectHandle set laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                                where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id and style='B'";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                laborbad_qty = decimal.Parse(json[0].children[i].laborbad_dvalue),
                                materielbad_qty = decimal.Parse(json[0].children[i].materielbad_dvalue),
                                wo_code = json[0].wo_code,
                                step_code = json[0].step_code,
                                defect_id = int.Parse(json[0].children[i].ng_id),
                                updatereportuser = us.usercode,
                                updatereportdate = date
                            }
                        });
                    }
                }
                if (json[0].flw_type.ToString() == "W")//外协工序
                {
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "修改报工成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "修改报工失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models.UpdateReport
{
    /// <summary>
    /// ä¿®æ”¹æŠ¥å·¥æäº¤æ•°æ®ç±»
    /// </summary>
    public class UpdateProductReport
    {
        public string id { get; set; }  //报工记录主表id/外协收料记录主表id
        public string sbid { get; set; }  //报工记录子表id/外协收料记录子表id
        public string wo_code { get; set; }  //生产工单号
        public string partnumber { get; set; }  //物料编码
        public string task_qty { get; set; }  //工单数量
        public string wkshp_code { get; set; }  //车间编号
        public string eqp_code { get; set; }  //设备编码/外协供应商编码
        public string step_seq { get; set; }  //工序序号
        public string step_code { get; set; }  //工序编码
        public string flw_type { get; set; }  //工序属性(Z:自制 W:外协)
        public string first_choke { get; set; }  //是否首道工序
        public string last_choke { get; set; }  //是否末道工序
        public string unprice { get; set; }  //工序单价
        public string groupcode { get; set; }  //班组编码
        public string usercode { get; set; }  //报工人员编码
        public string report_date { get; set; }  //报工时间
        public string report_qty { get; set; }  //报工数量
        public string report_dvalue { get; set; } //报工数量差值
        public List<UpdateReportSub> children { get; set; }
    }
    public class UpdateReportSub
    {
        public string ng_id { get; set; }  //不良记录主id
        public string ng_sbid { get; set; }  //不良记录子id
        public string ng_qty { get; set; }  //不良数量
        public string ng_dvalue { get; set; } //不良数量差值
        public string laborbad_qty { get; set; }  //工废数量
        public string laborbad_dvalue { get; set; }  //工废数量差值
        public string materielbad_qty { get; set; }  //料废数量
        public string materielbad_dvalue { get; set; }  //料废数量差值
        public string bad_money { get; set; }  //报废金额
        public string badmoney_dvalue { get; set; }  //报废金额差值
    }
}
VueWebCoreApi/Tools/AppLableBarCode.cs
@@ -24,17 +24,25 @@
        {
            string sql, year = "", month = "", day = "", fdate = "", q = "", cunm2 = "", Encode = "", cunm = "";
            int digit2 = 0, value2 = 0, digit3 = 0, digitdiff = 0;
            decimal labcum = 0;
            bool stf;
            List<object> list = new List<object>();
            List<string> listdt = new List<string>();
            List<AppLabCode> lab = new List<AppLabCode>();
            var dynamicParams = new DynamicParameters();
            //获取标签个数:进一法
            decimal labcum = Math.Ceiling(decimal.Parse(qty) / decimal.Parse(onelabqty));
            if (qty == "0" && onelabqty == "0")
            {
                labcum = 1;
            }
            else
            {
                labcum = Math.Ceiling(decimal.Parse(qty) / decimal.Parse(onelabqty));
            }
            try
            {
                sql = @"select prefix,filingdate,incbit,value from  TCodeRules  where rightcode=@rightcode";
                dynamicParams.Add("@rightcode", rightcode);
                sql = @"select prefix,filingdate,incbit,value from  TCodeRules  where menucode=@menucode";
                dynamicParams.Add("@menucode", rightcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
@@ -60,10 +68,10 @@
                                break;
                        }
                        //更新规则表位数及流水号
                        sql = @"update TCodeRules set incbit=@incbit,value=@cunm2  where rightcode=@rightcode";
                        sql = @"update TCodeRules set incbit=@incbit,value=@cunm2  where menucode=@menucode";
                        dynamicParams.Add("@incbit", cunm.Length);
                        dynamicParams.Add("@cunm2", cunm);
                        dynamicParams.Add("@rightcode", rightcode);
                        dynamicParams.Add("@menucode", rightcode);
                        list.Add(new { str = sql, parm = dynamicParams });
                        stf = DapperHelper.DoTransaction(list);
                        if (stf)
VueWebCoreApi/Tools/ScanStartReport.cs
@@ -46,20 +46,20 @@
                }
                //1.根据工单+工序查找当前工序是否首道工序
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.org_code,L.org_name
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name
                        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
                        left join  TMateriel_Info P on M.materiel_code=P.partcode
                        left join  TOrganization L on M.wkshp_code=L.org_code
                        left join  TOrganization L on M.wkshp_code=L.torg_code
                        where A.wo_code=@ordercode and A.step_code=@stepcode";
                dynamicParams.Add("@ordercode", ordercode);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    rt.wkshopcode = data.Rows[0]["org_code"].ToString(); //车间编码
                    rt.wkshopname = data.Rows[0]["org_name"].ToString(); //车间名称
                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //车间编码
                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //车间名称
                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //工单号
                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //产品编码
                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //产品名称
@@ -86,7 +86,7 @@
                    {
                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码
                        rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称
                        rt.nextstepprice = data.Rows[0]["NEXTSTEPPRICE"].ToString(); //下道工序工价
                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //下道工序工价
                    }
                    if (isend == "Y")  //当前工序是末道工序
                    {
@@ -419,20 +419,20 @@
                }
                //1.根据工单+工序查找当前工序是否首道工序
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.org_code,L.org_name
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name
                        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
                        left join  TMateriel_Info P on M.materiel_code=P.partcode
                        left join  TOrganization L on M.wkshp_code=L.org_code
                        left join  TOrganization L on M.wkshp_code=L.torg_code
                        where A.wo_code=@ordercode and A.step_code=@stepcode";
                dynamicParams.Add("@ordercode", ordercode);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    rt.wkshopcode = data.Rows[0]["org_code"].ToString(); //车间编码
                    rt.wkshopname = data.Rows[0]["org_name"].ToString(); //车间名称
                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //车间编码
                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //车间名称
                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //工单号
                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //产品编码
                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //产品名称
@@ -458,7 +458,7 @@
                    {
                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码
                        rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称
                        rt.nextstepprice = data.Rows[0]["NEXTSTEPPRICE"].ToString(); //下道工序工价
                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //下道工序工价
                    }
                    if (isend == "Y")  //当前工序是末道工序
                    {
@@ -786,7 +786,7 @@
                                {
                                    //1.首道工序时,判断是否有发料记录
                                    sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty
                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
                                            from TK_Wrk_OutRecord R
                                            left join TCustomer C on R.wx_code=C.code
                                            where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
@@ -798,7 +798,7 @@
                                    {
                                        //1.首道工序时,判断是否有收料记录
                                        sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty
                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
                                                from TK_Wrk_OutRecord R
                                                left join TCustomer C on R.wx_code=C.code
                                                where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
@@ -845,7 +845,8 @@
                                                    fqty = g.Sum(i => (decimal)i["fqty"]),
                                                    sqty = g.Sum(i => (decimal)i["sqty"]),
                                                    ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
                                                    bad_qty = g.Sum(i => (decimal)i["bad_qty"])
                                                    laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
                                                    materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                }).ToList();
                                                mes.code = "200";
@@ -877,7 +878,8 @@
                                                fqty = g.Sum(i => (decimal)i["fqty"]),
                                                sqty = g.Sum(i => (decimal)i["sqty"]),
                                                ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
                                                bad_qty = g.Sum(i => (decimal)i["bad_qty"])
                                                laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
                                                materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                            }).ToList();
                                            mes.code = "200";
@@ -908,7 +910,7 @@
                                    {
                                        //1.非首道工序时,判断本道是否有发料记录
                                        sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty
                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
                                            from TK_Wrk_OutRecord R
                                            left join TCustomer C on R.wx_code=C.code
                                            where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
@@ -920,7 +922,7 @@
                                        {
                                            //2.非首道工序时,判断本道是否有收料记录
                                            sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty
                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty
                                                from TK_Wrk_OutRecord R
                                                left join TCustomer C on R.wx_code=C.code
                                                where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
@@ -966,7 +968,8 @@
                                                        fqty = g.Sum(i => (decimal)i["fqty"]),
                                                        sqty = g.Sum(i => (decimal)i["sqty"]),
                                                        ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
                                                        bad_qty = g.Sum(i => (decimal)i["bad_qty"])
                                                        laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
                                                        materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                    }).ToList();
                                                    mes.code = "200";
@@ -996,7 +999,8 @@
                                                    fqty = g.Sum(i => (decimal)i["fqty"]),
                                                    sqty = g.Sum(i => (decimal)i["sqty"]),
                                                    ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
                                                    bad_qty = g.Sum(i => (decimal)i["bad_qty"])
                                                    laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
                                                    materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                }).ToList();
                                                mes.code = "200";
                                                mes.count = 3;