yl
2024-10-30 65a9633ebcf5cf4c0871d1c857a743ec7694c157
1.生产入库功能接口
2.生产入库单报表接口
已添加1个文件
已修改7个文件
778 ■■■■■ 文件已修改
VueWebCoreApi/Controllers/ReportManagerController.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/ReportManagerBLL.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs 326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Models/InventoryModel/StorageRecord.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Tools/DapperHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/ReportManagerController.cs
@@ -5,6 +5,8 @@
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.BLL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.InventoryModel;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.Controllers
@@ -596,5 +598,89 @@
            return Json(mes);
        }
        #endregion
        #region[入库记录]
        /// <summary>
        /// å…¥åº“记录
        /// </summary>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <param name="hbillno">入库单号</param>
        /// <param name="sono">销售单号</param>
        /// <param name="mono">订单号</param>
        /// <param name="wocode">工单号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="stockcode">仓库编码</param>
        /// <param name="responddate">单据日期</param>
        /// <returns></returns>
        [Route(template: "StorageRecordSearch")]
        [HttpGet]
        public JsonResult StorageRecordSearch(int page, int rows, string prop, string order, string hbillno = null, string sono = null, string mono = null, string wocode = null, string partcode = null,string partname=null, string stockcode=null,string responddate=null)
        {
            string respondopendate = "";     //单据开始时间
            string respondclosedate = "";    //单据结束时间
            if (responddate != "" && responddate != null)
            {
                respondopendate = responddate.Split('~')[0].ToString();
                respondclosedate = responddate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ReportManagerBLL.StorageRecordSearch(hbillno, sono, mono, wocode, partcode, partname, stockcode, respondopendate, respondclosedate, startNum, endNum, prop, order);
            return Json(mes);
        }
        #endregion
        #region[入库记录删除]
        /// <summary>
        /// å…¥åº“记录删除
        /// </summary>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "DeleteStorageRecord")]
        [HttpPost]
        public JsonResult DeleteStorageRecord(List<StorageRecord> json)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            User us = JwtTools.Denocode(token.ToString());
            mes = ReportManagerBLL.DeleteStorageRecord(json, us);
            return Json(mes);
        }
        #endregion
        #region[入库记录导出]
        /// <summary>
        /// å…¥åº“记录导出
        /// </summary>
        /// <param name="hbillno">入库单号</param>
        /// <param name="sono">销售单号</param>
        /// <param name="mono">订单号</param>
        /// <param name="wocode">工单号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="stockcode">仓库编码</param>
        /// <param name="responddate">单据日期</param>
        /// <returns></returns>
        [Route(template: "StorageRecordExcelSearch")]
        [HttpGet]
        public JsonResult StorageRecordExcelSearch(string hbillno = null, string sono = null, string mono = null, string wocode = null, string partcode = null,string partname=null, string stockcode = null, string responddate = null)
        {
            string respondopendate = "";     //单据开始时间
            string respondclosedate = "";    //单据结束时间
            if (responddate != "" && responddate != null)
            {
                respondopendate = responddate.Split('~')[0].ToString();
                respondclosedate = responddate.Split('~')[1].ToString();
            }
            mes = ReportManagerBLL.StorageRecordExcelSearch(hbillno, sono, mono, wocode, partcode, partname, stockcode, respondopendate, respondclosedate);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -833,9 +833,23 @@
        }
        #endregion
        #region[通易T8生产入库提交]
        #region[生产入库获取部门信息]
        /// <summary>
        /// é€šæ˜“T8生产入库提交
        /// ç”Ÿäº§å…¥åº“获取部门信息
        /// </summary>
        /// <returns></returns>
        [Route(template: "DeptSelectData")]
        [HttpGet]
        public JsonResult DeptSelectData()
        {
            mes = WorkOrderBLL.DeptSelectData();
            return Json(mes);
        }
        #endregion
        #region[通易T8生产入库提交-代码版]
        /// <summary>
        /// é€šæ˜“T8生产入库提交-代码版
        /// </summary>
        /// <param name="data">提交数据</param>
        /// <returns></returns>
@@ -850,5 +864,23 @@
            return Json(mes);
        }
        #endregion
        #region[通易T8生产入库提交-存储过程版(适用同一台服务器,同一个数据库)]
        /// <summary>
        /// é€šæ˜“T8生产入库提交-存储过程版(适用同一台服务器,同一个数据库)
        /// </summary>
        /// <param name="data">提交数据</param>
        /// <returns></returns>
        [Route(template: "ProductInHouseOrderSpSeave")]
        [HttpPost]
        public JsonResult ProductInHouseOrderSpSeave(InReptModel data)
        {
            var token = HttpContext.Request.Headers["Token"].ToString();
            //var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyY29kZSI6Ijk5OTkiLCJ1c2VybmFtZSI6Iuezu-e7n-euoeeQhuWRmCIsInN0b3JnX2NvZGUiOiIiLCJzdG9yZ19uYW1lIjoiIiwiaXNfc3lzdGVtX2FkbWluIjoiWSIsInJvbGVfY29kZSI6IiIsInJvbGVfZGF0YXBlcm1pc3Npb25zIjoiIiwidXNlcnR5cGUiOiJQQyIsInJlZGlza2V5IjoiTmV3TUVTTG9naW5Vc2VySURQQzk5OTkiLCJtZXNTZXR0aW5nIjoie1wicm91dGVcIjp0cnVlLFwiaXNPcmRlclwiOnRydWUsXCJkZXZpY2VcIjp0cnVlLFwidGVjaFwiOnRydWUsXCJ3b3JrT3JkZXJcIjp0cnVlLFwiZXZlcnlcIjpmYWxzZSxcImxhc3RcIjpmYWxzZX0iLCJ0aW1lb3V0IjoiMjAyNC0xMC0yNFQxMjozNTo1MC4zNDI1NzE2KzA4OjAwIn0.Nbc-1sXd4QLLsnj8wH9XC7iWEmP0wDG82gwLxIh94e4";
            User us = JwtTools.Denocode(token.ToString());
            mes = WorkOrderBLL.ProductInHouseOrderSpSeave(data, us);
            return Json(mes);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/ReportManagerBLL.cs
@@ -3,6 +3,8 @@
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.DLL.DAL;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.InventoryModel;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.BLL
@@ -134,5 +136,27 @@
            return ReportManagerDAL.AnDonReportSumExcelSearch(wkshopcode, eqpcode, calltypecode, callopendate, callclosedate, respondopendate, respondclosedate);
        }
        #endregion
        #region[入库记录]
        public static ToMessage StorageRecordSearch(string hbillno, string sono, string mono, string wocode, string partcode,string partname, string stockcode, string respondopendate, string respondclosedate, int startNum, int endNum, string prop, string order)
        {
            return ReportManagerDAL.StorageRecordSearch(hbillno,sono,mono,wocode,partcode, partname,stockcode, respondopendate,respondclosedate,startNum,endNum,prop,order);
        }
        #endregion
        #region[入库记录删除]
        public static ToMessage DeleteStorageRecord(List<StorageRecord> json, User us)
        {
            return ReportManagerDAL.DeleteStorageRecord(json,us);
        }
        #endregion
        #region[入库记录导出]
        public static ToMessage StorageRecordExcelSearch(string hbillno, string sono, string mono, string wocode, string partcode,string partname, string stockcode, string respondopendate, string respondclosedate)
        {
            return ReportManagerDAL.StorageRecordExcelSearch(hbillno, sono, mono, wocode, partcode, partname, stockcode, respondopendate, respondclosedate);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -269,11 +269,25 @@
        }
        #endregion
        #region[通易T8生产入库提交]
        #region[生产入库获取部门信息]
        public static ToMessage DeptSelectData()
        {
            return WorkOrderDAL.DeptSelectData();
        }
        #endregion
        #region[通易T8生产入库提交-代码版]
        public static ToMessage ProductInHouseOrderSeave(InReptModel data, User us)
        {
            return WorkOrderDAL.ProductInHouseOrderSeave(data, us);
        }
        #endregion
        #region[通易T8生产入库提交-存储过程版(适用同一台服务器,同一个数据库)]
        public static ToMessage ProductInHouseOrderSpSeave(InReptModel data, User us)
        {
            return WorkOrderDAL.ProductInHouseOrderSpSeave(data, us);
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/ReportManagerDAL.cs
@@ -5,6 +5,8 @@
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Models;
using VueWebCoreApi.Models.InventoryModel;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.DLL.DAL
@@ -1382,11 +1384,6 @@
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
@@ -1468,11 +1465,6 @@
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
@@ -1542,11 +1534,6 @@
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
@@ -1610,11 +1597,6 @@
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
@@ -1645,5 +1627,309 @@
            return mes;
        }
        #endregion
        #region[入库记录]
        public static ToMessage StorageRecordSearch(string hbillno, string sono, string mono, string wocode, string partcode, string partname, string stockcode, string respondopendate, string respondclosedate, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (hbillno != "" && hbillno != null)
                {
                    search += "and AA.hbillno like '%'+@hbillno+'%' ";
                    dynamicParams.Add("@hbillno", hbillno);
                }
                if (sono != "" && sono != null)
                {
                    search += "and AA.salecode like '%'+@sono+'%' ";
                    dynamicParams.Add("@sono", sono);
                }
                if (mono != "" && mono != null)
                {
                    search += "and AA.mo_no like '%'+@mono+'%' ";
                    dynamicParams.Add("@mono", mono);
                }
                if (wocode != "" && wocode != null)
                {
                    search += "and AA.wocode like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and AA.partcode  like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and AA.partname  like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (stockcode != "" && stockcode != null)
                {
                    search += "and AA.stockcode=@stockcode ";
                    dynamicParams.Add("@stockcode", stockcode);
                }
                if (respondopendate != "" && respondopendate != null)
                {
                    search += "and AA.hbdate between @respondopendate and @respondclosedate ";
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select *  from(
                           select A.hbillno,A.hbdate,B.salecode,B.mo_no,B.wocode,B.partcode,P.partname,P.partspec,M.wkshp_code,T.torg_name as wkshp_name,B.stockcode,S.name as stockname,
                           B.qty,B.inbarcode,R.step_code,E.stepname,R.style,A.create_user,A.create_date
                           from TK_WMS_Inwh_Main A
                           inner join TK_WMS_Inwh_Sub B on A.hbillno=B.hbillno
                           inner join TK_Wrk_Record R on B.inbarcode=R.inbarcode
                           left join  TK_Wrk_Man M on B.wocode=M.wo_code
                           left join  TMateriel_Info P on B.partcode=P.partcode
                           left join  TSecStck S on B.stockcode=S.code
                           left join  TStep E on R.step_code=E.stepcode
                           left join  TOrganization T on M.wkshp_code=T.torg_code
                           union all
                           select A.hbillno,A.hbdate,B.salecode,B.mo_no,B.wocode,B.partcode,P.partname,P.partspec,M.wkshp_code,T.torg_name as wkshp_name,B.stockcode,S.name as stockname,
                           B.qty,B.inbarcode,O.step_code,E.stepname,O.style,A.create_user,A.create_date
                           from TK_WMS_Inwh_Main A
                           inner join TK_WMS_Inwh_Sub B on A.hbillno=B.hbillno
                           inner join TK_Wrk_OutRecord O on B.inbarcode=O.inbarcode
                           left join  TK_Wrk_Man M on B.wocode=M.wo_code
                           left join  TMateriel_Info P on B.partcode=P.partcode
                           left join  TSecStck S on B.stockcode=S.code
                           left join  TStep E on O.step_code=E.stepcode
                           left join  TOrganization T on M.wkshp_code=T.torg_code
                           ) as AA where 1=1 " + 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 DeleteStorageRecord(List<StorageRecord> json, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                // ä½¿ç”¨LINQ的lambda表达式根据hbillno分组并统计每个组的条数
                var groupedRecords = json.GroupBy(r => r.hbillno).Select(g => new{hbillno = g.Key,count = g.Count()}).ToList();
                for (int i = 0; i < groupedRecords.Count; i++)
                {
                    //查询入库单子表的数据条数
                    sql = @"select *  from TK_WMS_Inwh_Sub where hbillno=@hbillno";
                    dynamicParams.Add("@hbillno", groupedRecords[i].hbillno);
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    //子表有对应入库单号数据且数据条数等于提交的入库条数
                    if (data.Rows.Count > 0 && data.Rows.Count == groupedRecords[i].count)
                    {
                        //删除入库单主表
                        sql = @"delete  TK_WMS_Inwh_Main  where hbillno=@hbillno";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                hbillno = groupedRecords[i].hbillno.ToString()
                            }
                        });
                    }
                }
                for (int i = 0; i < json.Count; i++)
                {
                    //删除入库单子表
                    sql = @"delete  TK_WMS_Inwh_Sub  where hbillno=@hbillno  and inbarcode=@inbarcode";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            hbillno = json[i].hbillno.ToString(),
                            inbarcode = json[i].inbarcode.ToString()
                        }
                    });
                    if (json[i].style == "B")
                    {
                        //自制报工记录表入库数量
                        sql = @"update TK_Wrk_Record set inhouseqty=inhouseqty-@qty where inbarcode=@inbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                qty = json[i].qty.ToString(),
                                inbarcode = json[i].inbarcode.ToString()
                            }
                        });
                    }
                    if (json[i].style == "S")
                    {
                        //外协收料记录表入库数量
                        sql = @"update TK_Wrk_OutRecord set inhouseqty=inhouseqty-@qty where inbarcode=@inbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                qty = json[i].qty.ToString(),
                                inbarcode = json[i].inbarcode.ToString()
                            }
                        });
                    }
                    //清除工序任务表累计入库数量
                    sql = @"update TK_Wrk_Step set inhouseqty=inhouseqty-@qty where wo_code=@wocode and step_code=@stepcode and isend='Y'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            qty = json[i].qty.ToString(),
                            wocode = json[i].wocode.ToString(),
                            stepcode = json[i].step_code.ToString()
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                LogHelper.WriteLogData(aa.ToString());
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "删除", "删除了入库单:"+ string.Join(",", json.Select(r => $"{r.hbillno},{r.inbarcode}")), us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.message = "入库单删除成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "入库单删除失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[入库记录导出]
        public static ToMessage StorageRecordExcelSearch(string hbillno, string sono, string mono, string wocode, string partcode, string partname, string stockcode, string respondopendate, string respondclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (hbillno != "" && hbillno != null)
                {
                    search += "and AA.hbillno like '%'+@hbillno+'%' ";
                    dynamicParams.Add("@hbillno", hbillno);
                }
                if (sono != "" && sono != null)
                {
                    search += "and AA.salecode like '%'+@sono+'%' ";
                    dynamicParams.Add("@sono", sono);
                }
                if (mono != "" && mono != null)
                {
                    search += "and AA.mo_no like '%'+@mono+'%' ";
                    dynamicParams.Add("@mono", mono);
                }
                if (wocode != "" && wocode != null)
                {
                    search += "and AA.wocode like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and AA.partcode  like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and AA.partname  like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (stockcode != "" && stockcode != null)
                {
                    search += "and AA.stockcode=@stockcode ";
                    dynamicParams.Add("@stockcode", stockcode);
                }
                if (respondopendate != "" && respondopendate != null)
                {
                    search += "and A.hbdate between @respondopendate and @respondclosedate ";
                    dynamicParams.Add("@respondopendate", respondopendate + " 00:00:00");
                    dynamicParams.Add("@respondclosedate", respondclosedate + " 23:59:59");
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select AA.hbillno as å…¥åº“单号,AA.hbdate as å•据日期,AA.salecode as é”€å”®å•号,AA.mo_no as è®¢å•号,AA.wocode as å·¥å•号,AA.partcode as äº§å“ç¼–码,AA.partname as äº§å“åç§°,
                            AA.partspec as äº§å“è§„æ ¼,AA.wkshp_code as è½¦é—´ç¼–码,AA.torg_name as è½¦é—´åç§°,AA.stockcode as ä»“库编码,AA.stockname as ä»“库名称, AA.qty as å…¥åº“数量,
                            AA.step_code as å·¥åºç¼–码,AA.stepname as å·¥åºåç§°,AA.create_user as åˆ›å»ºäººå‘˜,AA.create_date as åˆ›å»ºæ—¶é—´
                           from(
                           select A.hbillno,A.hbdate,B.salecode,B.mo_no,B.wocode,B.partcode,P.partname,P.partspec,M.wkshp_code,T.torg_name,B.stockcode,S.name as stockname,
                           B.qty,B.inbarcode,R.step_code,E.stepname,R.style,A.create_user,A.create_date
                           from TK_WMS_Inwh_Main A
                           inner join TK_WMS_Inwh_Sub B on A.hbillno=B.hbillno
                           inner join TK_Wrk_Record R on B.inbarcode=R.inbarcode
                           left join  TK_Wrk_Man M on B.wocode=M.wo_code
                           left join  TMateriel_Info P on B.partcode=P.partcode
                           left join  TSecStck S on B.stockcode=S.code
                           left join  TStep E on R.step_code=E.stepcode
                           left join  TOrganization T on M.wkshp_code=T.torg_code
                           union all
                           select A.hbillno,A.hbdate,B.salecode,B.mo_no,B.wocode,B.partcode,P.partname,P.partspec,M.wkshp_code,T.torg_name as wkshp_name,B.stockcode,S.name as stockname,
                           B.qty,B.inbarcode,O.step_code,E.stepname,O.style,A.create_user,A.create_date
                           from TK_WMS_Inwh_Main A
                           inner join TK_WMS_Inwh_Sub B on A.hbillno=B.hbillno
                           inner join TK_Wrk_OutRecord O on B.inbarcode=O.inbarcode
                           left join  TK_Wrk_Man M on B.wocode=M.wo_code
                           left join  TMateriel_Info P on B.partcode=P.partcode
                           left join  TSecStck S on B.stockcode=S.code
                           left join  TStep E on O.step_code=E.stepcode
                           left join  TOrganization T on M.wkshp_code=T.torg_code
                           ) as AA where 1=1 " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
                data.TableName = "Table"; //设置DataTable的名称
                string msg = DownLoad.DataTableToExcel(data, "入库记录报表");
                mes.code = "200";
                mes.message = "查询成功!";
                mes.count = total;
                mes.data = msg;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -1573,12 +1573,15 @@
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.id,A.status,B.dept_code,B.wkshp_code,T.torg_name as wkshp_name,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date,
                        E.sbid,B.m_po,E.saleOrderCode,E.saleOrderDetailId,E.unitid,E.unitcode,E.unitname,K.code as stockcode,k.name as stockname
                        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
                        left join TOrganization T on B.wkshp_code=T.torg_code
                        left join TKimp_Ewo E on B.sourceid=E.id and B.m_po=E.wo
                        left join TSecStck K on M.idwarehouse=K.code
                        where A.status in('ALLO','START') and S.flwtype='Z'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
@@ -1677,12 +1680,15 @@
                sql = @"select A.id,A.status,B.dept_code,B.wkshp_code,T.torg_name as wkshp_name,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,
                        (select isnull(sum(fqty),0) as fqty   from TK_Wrk_OutRecord where wo_code=A.wo_code and step_code=A.step_code and style='F') as fqty,
                        A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
                        A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date,
                        E.sbid,B.m_po,E.saleOrderCode,E.saleOrderDetailId,E.unitid,E.unitcode,E.unitname,K.code as stockcode,k.name as stockname
                        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
                        left join TOrganization T on B.wkshp_code=T.torg_code
                        left join TKimp_Ewo E on B.sourceid=E.id and B.m_po=E.wo
                        left join TSecStck K on M.idwarehouse=K.code
                        where A.status in('ALLO','START') and S.flwtype='W'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
@@ -4085,10 +4091,231 @@
        }
        #endregion
        #region[通易T8生产入库提交]
        #region[生产入库获取部门信息]
        public static ToMessage DeptSelectData()
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                sql = @"select * from h_v_TFDepent";
                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[通易T8生产入库提交-代码版]
        public static ToMessage ProductInHouseOrderSeave(InReptModel data, User us)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                //查询入库单是否已存在
                sql = @"select *  from srv_lnk_TFT8.erp_t8_XKDCS.[dbo].[scm_in1] where sheet_no=@hbillno";
                dynamicParams.Add("@hbillno", data.TableData[0].Rows[0]["hbillno"].ToString());
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "入库单号已存在!";
                    mes.data = null;
                    return mes;
                }
                //写入入库单主表(MES)
                sql = @"insert into TK_WMS_Inwh_Main(docu_typecode,hbillno,hbdate,deptno,storehouse_code,status,remark,create_user,create_date)
                        values(@docu_typecode,@hbillno,@hbdate,@deptno,@storehouse_code,@status,@remark,@create_user,@create_date)";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        docu_typecode = "WI",
                        hbillno = data.TableData[0].Rows[0]["hbillno"].ToString(),
                        hbdate = data.TableData[0].Rows[0]["hbdate"].ToString(),
                        deptno = data.TableData[0].Rows[0]["deptno"].ToString(),
                        storehouse_code = data.TableData[0].Rows[0]["storehouse_code"].ToString(),
                        status = data.TableData[0].Rows[0]["status"].ToString(),
                        remark = data.TableData[0].Rows[0]["remark"].ToString(),
                        create_user = data.TableData[0].Rows[0]["create_user"].ToString(),
                        create_date = data.TableData[0].Rows[0]["create_date"].ToString()
                    }
                });
                //写入入库单主表(T8)
                sql = @"insert into srv_lnk_TFT8.erp_t8_XKDCS.[dbo].[scm_in1](sheet_type,sheet_no,sheet_sta,sheet_date,dept_no,st_no,sheet_amt,check_sta,create_date,create_user,add_flag)
                        values(@sheet_type,@sheet_no,@sheet_sta,@sheet_date,@dept_no,@st_no,@sheet_amt,@check_sta,@create_date,@create_user,@add_flag)";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        sheet_type = "WI",
                        sheet_no = data.TableData[0].Rows[0]["hbillno"].ToString(),
                        sheet_sta = data.TableData[0].Rows[0]["status"].ToString(),
                        sheet_date = data.TableData[0].Rows[0]["hbdate"].ToString(),
                        dept_no = data.TableData[0].Rows[0]["deptno"].ToString(),
                        st_no = data.TableData[0].Rows[0]["storehouse_code"].ToString(),
                        sheet_amt = "0",
                        check_sta = "0",
                        create_date = data.TableData[0].Rows[0]["create_date"].ToString(),
                        create_user = data.TableData[0].Rows[0]["create_user"].ToString(),
                        add_flag = "1"
                    }
                });
                for (int i = 0; i < data.TableData[1].Rows.Count; i++)
                {
                    if (data.TableData[1].Rows[i]["style"].ToString() == "B")
                    {
                        //条件满足时执行的操作(回写报工记录主表的入库数量)
                        sql = @"update TK_Wrk_Record set inhouseqty=inhouseqty+@qty where inbarcode=@inbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                qty = data.TableData[1].Rows[i]["qty"].ToString(),
                                inbarcode = data.TableData[1].Rows[i]["inbarcode"].ToString()
                            }
                        });
                    }
                    if (data.TableData[1].Rows[i]["style"].ToString() == "S")
                    {
                        //条件满足时执行的操作(回写外协收料记录主表的入库数量)
                        sql = @"update TK_Wrk_OutRecord set inhouseqty=inhouseqty+@qty where inbarcode=@inbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                qty = data.TableData[1].Rows[i]["qty"].ToString(),
                                inbarcode = data.TableData[1].Rows[i]["inbarcode"].ToString()
                            }
                        });
                    }
                    //回写工单工序表末道工序已入库数量
                    sql = @"update TK_Wrk_Step set inhouseqty=inhouseqty+@qty where wo_code=@wocode and step_code=@stepcode and isend='Y'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            qty = data.TableData[1].Rows[i]["qty"].ToString(),
                            wocode = data.TableData[1].Rows[i]["wocode"].ToString(),
                            stepcode = data.TableData[1].Rows[i]["stepcode"].ToString()
                        }
                    });
                    //写入入库单子表(MES)
                    sql = @"insert into TK_WMS_Inwh_Sub (hbillno,rownumber,inbarcode,mo_id,mo_no,wocode,partcode,unitcode,unit_rate,stockcode,qty,price,saleid,salecode,status,style)
                           values(@hbillno,@rownumber,@inbarcode,@mo_id,@mo_no,@wocode,@partcode,@unitcode,@unit_rate,@stockcode,@qty,@price,@saleid,@salecode,@status,@style)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            hbillno = data.TableData[1].Rows[i]["hbillno"].ToString(),
                            rownumber = data.TableData[1].Rows[i]["rownumber"].ToString(),
                            inbarcode = data.TableData[1].Rows[i]["inbarcode"].ToString(),
                            mo_id = data.TableData[1].Rows[i]["mo_id"].ToString(),
                            mo_no = data.TableData[1].Rows[i]["mo_no"].ToString(),
                            wocode = data.TableData[1].Rows[i]["wocode"].ToString(),
                            partcode = data.TableData[1].Rows[i]["partcode"].ToString(),
                            unitcode = data.TableData[1].Rows[i]["unitcode"].ToString(),
                            unit_rate = data.TableData[1].Rows[i]["unit_rate"].ToString(),
                            stockcode = data.TableData[1].Rows[i]["stockcode"].ToString(),
                            qty = data.TableData[1].Rows[i]["qty"].ToString(),
                            price = data.TableData[1].Rows[i]["price"].ToString(),
                            saleid = data.TableData[1].Rows[i]["saleid"].ToString(),
                            salecode = data.TableData[1].Rows[i]["salecode"].ToString(),
                            status = data.TableData[1].Rows[i]["status"].ToString(),
                            style = data.TableData[1].Rows[i]["style"].ToString()
                        }
                    });
                    //写入入库单子表(T8)
                    sql = @"insert into srv_lnk_TFT8.erp_t8_XKDCS.[dbo].[scm_in2] (sheet_no,sheet_id,goods_no,unit_no,unit_rate,st_no,sheet_qty,mo_no,mo_id,sheet_pri,ord_no,ord_id,sheet_sta,add_flag)
                           values(@sheet_no,@sheet_id,@goods_no,@unit_no,@unit_rate,@st_no,@sheet_qty,@mo_no,@mo_id,@sheet_pri,@ord_no,@ord_id,@sheet_sta,@add_flag)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            sheet_no = data.TableData[1].Rows[i]["hbillno"].ToString(),
                            sheet_id = data.TableData[1].Rows[i]["rownumber"].ToString(),
                            goods_no = data.TableData[1].Rows[i]["partcode"].ToString(),
                            unit_no = data.TableData[1].Rows[i]["unitcode"].ToString(),
                            unit_rate = "1",
                            st_no = data.TableData[1].Rows[i]["stockcode"].ToString(),
                            sheet_qty = data.TableData[1].Rows[i]["qty"].ToString(),
                            mo_no = data.TableData[1].Rows[i]["mo_no"].ToString(),
                            mo_id = data.TableData[1].Rows[i]["mo_id"].ToString(),
                            sheet_pri = "1",
                            ord_no = data.TableData[1].Rows[i]["salecode"].ToString(),
                            ord_id = data.TableData[1].Rows[i]["saleid"].ToString(),
                            sheet_sta = data.TableData[1].Rows[i]["status"].ToString(),
                            add_flag = "1"
                        }
                    });
                }
                //更新入库单流水号
                sql = @" update TCodeRules set value = @incbit, incbit = LEN(CAST(@incbit AS VARCHAR))  where menucode = @rightcode";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        incbit = data.incbit,
                        rightcode = data.rightcode
                    }
                });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "入库单保存", "入库单号:" + data.TableData[0].Rows[0]["hbillno"].ToString(), us.usertype);
                    mes.code = "200";
                    mes.count = 0;
                    mes.message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[通易T8生产入库提交-存储过程版(适用同一台服务器,同一个数据库)]
        public static ToMessage ProductInHouseOrderSpSeave(InReptModel data, User us)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
VueWebCoreApi/Models/InventoryModel/StorageRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace VueWebCoreApi.Models.InventoryModel
{
    public class StorageRecord
    {
        /// <summary>
        /// å…¥åº“单号
        /// </summary>
        public string hbillno { get; set; }
        /// <summary>
        /// é”€å”®å•号
        /// </summary>
        public string salecode { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public string mo_no { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string wocode { get; set; }
        /// <summary>
        /// äº§å“ç¼–码
        /// </summary>
        public string partcode { get; set; }
        /// <summary>
        /// å…¥åº“数量
        /// </summary>
        public string qty { get; set; }
        /// <summary>
        /// è½¦é—´ç¼–码
        /// </summary>
        public string wkshop_code { get; set; }
        /// <summary>
        /// ä»“库编码
        /// </summary>
        public string stockcode { get; set; }
        /// <summary>
        /// æ¡ç 
        /// </summary>
        public string inbarcode { get; set; }
        /// <summary>
        /// å·¥åºç¼–码
        /// </summary>
        public string step_code { get; set; }
        /// <summary>
        /// æŠ¥å·¥ç±»åž‹(B:自制/S外协)
        /// </summary>
        public string style { get; set; }
    }
}
VueWebCoreApi/Tools/DapperHelper.cs
@@ -519,7 +519,7 @@
            {
                try
                {
                    DataTable table = new DataTable();
                    //DataTable table = new DataTable();
                    //var data = conn.ExecuteReader(sql, parm);
                    var res = conn.ExecuteReader(sql, parm, commandType: CommandType.StoredProcedure);//sql å­˜å‚¨è¿‡ç¨‹ 
                    result = true;