1.新增工单新增、编辑时通过产品找物料清单接口
2、修改工单新增、编辑接口(通过bom计算工单用料清单)
已修改4个文件
226 ■■■■ 文件已修改
VueWebCoreApi/Controllers/WorkOrderController.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/ProductModelDAL.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -248,6 +248,21 @@
        }
        #endregion
        #region[MES工单新增编辑时,根据产品获取Bom物料清单]
        /// <summary>
        /// MES工单新增编辑时,根据产品获取Bom物料清单
        /// </summary>
        /// <param name="partnumber">产品编码</param>
        /// <returns></returns>
        [Route(template: "MesOrderAddUpdateBomVison")]
        [HttpGet]
        public JsonResult MesOrderAddUpdateBomVison(string partnumber)
        {
            mes = WorkOrderBLL.MesOrderAddUpdateBomVison(partnumber);
            return Json(mes);
        }
        #endregion
        #region[MES工单新增、编辑提交]
        /// <summary>
        /// MES工单新增、编辑提交
VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -81,6 +81,13 @@
        }
        #endregion
        #region[MES工单新增编辑时,根据产品获取Bom物料清单]
        public static ToMessage MesOrderAddUpdateBomVison(string partnumber)
        {
            return WorkOrderDAL.MesOrderAddUpdateBomVison(partnumber);
        }
        #endregion
        #region[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string OperType, WorkList json, User us)
        {
VueWebCoreApi/DLL/DAL/ProductModelDAL.cs
@@ -1352,6 +1352,7 @@
                    parents[i].children = children.ToList();
                }
                mes.code = "200";
                mes.count = total;
                mes.message = "查询成功!";
                mes.data = parents;
            }
@@ -1847,7 +1848,100 @@
        #region[物料清单删除提交-T+畅捷通模式]
        public static ToMessage TBomDelete(BomDate bom, User us)
        {
            throw new NotImplementedException();
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //查询当前删除物料清单父件编码非本次是否存在多个版本,存在多个版本时,如果当前是默认BOM则不允许删除
                sql = @"select *   from TBom_Main S where  S.materiel_code=@materiel_code and version<>@version";
                dynamicParams.Add("@materiel_code", bom.materiel_code);
                dynamicParams.Add("@version", bom.version);
                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                if (data1.Rows.Count > 0)
                {
                    if (bom.isdefaultbom == "1")
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.message = "[" + bom.materiel_name + "-" + bom.version + "]默认BOM不允许删除!";
                        mes.data = null;
                        return mes;
                    }
                }
                //查询当前删除物料清单父件编码(ID)在物料清单子表中是否存在
                sql = @"select *   from TBom_Deta S
                        left join TMateriel_Info M on S.materiel_code=M.partcode
                        where  S.materiel_code=@materiel_code";
                dynamicParams.Add("@materiel_code", bom.materiel_code);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "[" + data0.Rows[0]["partname"].ToString() + "-"+bom.version+ "]已使用的记录不允许删除![物料清单子件]";
                    mes.data = null;
                    return mes;
                }
                //查询当前删除的物料清单父件编码(ID)是否被工单引用
                sql = @"select *  from TK_Wrk_Man where  bom_id=@bom_id";
                dynamicParams.Add("@bom_id", bom.id);
                var data_1 = DapperHelper.selectdata(sql, dynamicParams);
                if (data_1.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.message = "当前前BOM已经被工单引用,不可删除!";
                    mes.data = null;
                    return mes;
                }
                //删除物料清单子表
                sql = @"delete TBom_Deta  where m_id=@m_id";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        m_id = bom.id
                    }
                });
                //删除物料清单主表
                sql = @"delete TBom_Main  where id=@id";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        id = bom.id
                    }
                });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    //写入操作记录表
                    LogHelper.DbOperateLog(us.usercode, "删除", "删除了物料清单:" + bom.materiel_code + ",版本号为:" + bom.version, 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
VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -867,6 +867,31 @@
        }
        #endregion
        #region[MES工单新增编辑时,根据产品获取Bom物料清单]
        public static ToMessage MesOrderAddUpdateBomVison(string partnumber)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @" select id,version  from TBom_Main where materiel_code=@partnumber and status='Y' order by version desc ";
                dynamicParams.Add("@partnumber", partnumber);
                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[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string operType, WorkList json, User us)
        {
@@ -892,41 +917,24 @@
                        }
                        if (operType == "Add")
                        {
                            //写入工单表
                            sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
                                values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)";
                            list.Add(new
                            {
                                str = sql,
                                parm = new
                                {
                                    wo_code = json.wocode,
                                    wotype = json.wotype,
                                    status = json.wostatus,
                                    wkshp_code = json.wkshopcode,
                                    plan_qty = json.woqty,
                                    lm_user = us.usercode,
                                    lm_date = DateTime.Now.ToString(),
                                    materiel_code = json.partcode,
                                    route_code = route_code,
                                    sourceid = json.sourceid == "" ? null : json.sourceid, //无源单时赋值NULL
                                    m_po = json.sourcewo,
                                    saleOrderDeliveryDate = json.deliverydate,
                                    plan_startdate = json.paystartdate,
                                    plan_enddate = json.payenddate,
                                    orderlev = "3",//优先级:特级(1) 紧急(2) 正常(3)
                                    isaps = "N", //是否排产,默认N  Y=是   N=否
                                    data_sources = json.data_sources,
                                    isstep = json.isstep  //是否关联工序
                                }
                            });
                            // 假设你已经有了插入主表和子表的SQL语句  
                            //写入工单表
                            string workSql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
                                values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)";
                            //写入工单工序表
                            string masterInsertSql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date); SELECT CAST(SCOPE_IDENTITY() AS INT)";
                            //写入工单工序设备表
                            string detailInsertSql = @"insert into TK_Wrk_StepEqp(m_id,eqp_code,eqpprice) 
                            values(@m_id,@eqp_code,@eqpprice)";
                            //写入工单用料表
                            string workall = @"insert into TK_Wrk_Allo(wo_code,seq,materiel_code,qty,status,bom_id,stck_code,stopfeed,base_quantity,total_quantity,m_quantity,loss_quantity)
                            select @wocode,A.seq,A.materiel_code,(convert(decimal(18, 0), @woqty)*A.Base_Quantity*(1+A.LOSS_QUANTITY/100))/C.quantity,
                            'NEW',A.m_id,'','N',A.base_quantity,A.total_quantity,C.quantity,A.loss_quantity
                            from TBom_Deta A
                            left join  TBom_Main C on A.m_Id=C.id
                            left join TMateriel_Info B on A.materiel_code = B.partcode
                            where A.m_id=@bom_id";
                            // 插入工单表
                            var workParam = new DynamicParameters();
@@ -979,6 +987,15 @@
                                    conn.Execute(detailInsertSql, detailParam, transaction);
                                }
                            }
                            //写入工单用料表(子件)
                            if (json.bomid != "" && json != null)
                            {
                                var workallParam = new DynamicParameters();
                                workallParam.Add("@wocode", json.wocode);
                                workallParam.Add("@woqty", json.woqty);
                                workallParam.Add("@bom_id", json.bomid);
                                conn.Execute(workall, workallParam, transaction);
                            }
                            // 所有插入成功,提交事务  
                            transaction.Commit();
@@ -997,16 +1014,33 @@
                            var data = DapperHelper.selectdata(sql, dynamicParams);
                           
                            // 假设你已经有了插入主表和子表的SQL语句  
                            //修改工单表
                            string workSql = @"update TK_Wrk_Man set wotype=@wotype,wkshp_code=@wkshp_code,plan_qty=@plan_qty,lm_user=@lm_user,lm_date=@lm_date,
                            materiel_code=@materiel_code,route_code=@route_code,sourceid=@sourceid,m_po=@m_po,saleOrderDeliveryDate=@saleOrderDeliveryDate,plan_startdate=@plan_startdate,plan_enddate=@plan_enddate,isstep=@isstep
                            where wo_code=@wo_code";
                            //删除工单工序设备表
                            string deleteWrkStepEqp = @"delete TK_Wrk_StepEqp where m_id=@m_id";
                            //删除工单工序表
                            string deleteWrkStep = @"delete TK_Wrk_Step where wo_code=@wo_code";
                            //删除工单用料表
                            string deleteWrkALL = @"delete TK_Wrk_Allo where wo_code=@wo_code";
                            //写入工单工序表
                            string masterInsertSql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date); SELECT CAST(SCOPE_IDENTITY() AS INT)";
                            //写入工单工序设备表
                            string detailInsertSql = @"insert into TK_Wrk_StepEqp(m_id,eqp_code,eqpprice) 
                            values(@m_id,@eqp_code,@eqpprice)";
                            //写入工单用料表
                            string InsertWorkALL = @"insert into TK_Wrk_Allo(wo_code,seq,materiel_code,qty,status,bom_id,stck_code,stopfeed,base_quantity,total_quantity,m_quantity,loss_quantity)
                            select @wocode,A.seq,A.materiel_code,(convert(decimal(18, 0), @woqty)*A.Base_Quantity*(1+A.LOSS_QUANTITY/100))/C.quantity,
                            'NEW',A.m_id,'','N',A.base_quantity,A.total_quantity,C.quantity,A.loss_quantity
                            from TBom_Deta A
                            left join  TBom_Main C on A.m_Id=C.id
                            left join TMateriel_Info B on A.materiel_code = B.partcode
                            where A.m_id=@bom_id";
                            //修改生产订单表状态、已下达数量
                            string EwoStatusSql = @"update TKimp_Ewo set status=@status,relse_qty=@relse_qty where id=@sourceid and wo=@sourcewo";
                            // 修改工单表
                            var workParam = new DynamicParameters();
@@ -1040,6 +1074,11 @@
                            workStepParam.Add("@wo_code", json.wocode);
                            conn.Execute(deleteWrkStep, workStepParam, transaction);
                            //删除工单用料表
                            var deleteWrkALLParam = new DynamicParameters();
                            deleteWrkALLParam.Add("@wo_code", json.wocode);
                            conn.Execute(deleteWrkALL, deleteWrkALLParam, transaction);
                            //写入工单工序表
                            for (int i = 0; i < json.WorkListSub.Count; i++)
                            {
@@ -1068,6 +1107,15 @@
                                    detailParam.Add("@eqpprice", detail.unprice);
                                    conn.Execute(detailInsertSql, detailParam, transaction);
                                }
                            }
                            //写入工单用料表
                            if (json.bomid != "" && json.bomid != null)
                            {
                                var InsertWorkALLParam = new DynamicParameters();
                                InsertWorkALLParam.Add("@wocode", json.wocode);
                                InsertWorkALLParam.Add("@woqty", json.woqty);
                                InsertWorkALLParam.Add("@bom_id", json.bomid);
                                conn.Execute(InsertWorkALL, InsertWorkALLParam, transaction);
                            }
                            //判断源头单据是否来源ERP
                            if (json.data_sources == "ERP")
@@ -1176,8 +1224,8 @@
                    list.Add(new { str = sql, parm = new { wocode = wocode } });
                    //删除加工单用料表(子件)
                    //sql = @"delete TK_Wrk_Allo  where wo_code=@wocode";
                    //list.Add(new { str = sql, parm = new { wocode = wocode } });
                    sql = @"delete TK_Wrk_Allo  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = wocode } });
                    //删除工单表
                    sql = @"delete TK_Wrk_Man   where wo_code=@wocode";