1.新增工单新增、编辑时通过产品找物料清单接口
2、修改工单新增、编辑接口(通过bom计算工单用料清单)
| | |
| | | } |
| | | #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工单新增、编辑提交 |
| | |
| | | } |
| | | #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) |
| | | { |
| | |
| | | parents[i].children = children.ToList(); |
| | | } |
| | | mes.code = "200"; |
| | | mes.count = total; |
| | | mes.message = "查询成功!"; |
| | | mes.data = parents; |
| | | } |
| | |
| | | #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 |
| | | |
| | |
| | | } |
| | | #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) |
| | | { |
| | |
| | | } |
| | | 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(); |
| | |
| | | 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(); |
| | |
| | | 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(); |
| | |
| | | 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++) |
| | | { |
| | |
| | | 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") |
| | |
| | | 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"; |