| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[MES工单批量绑定获取工序数据] |
| | | public static ToMessage UpdateMesOrderStepListSearch(List<WorkStepList> worksteplist) |
| | | { |
| | | string sql = ""; decimal canupdate_qty = 0; |
| | | var dynamicParams = new DynamicParameters(); |
| | | List<Dictionary<object, object>> dir = new List<Dictionary<object, object>>(); |
| | | try |
| | | { |
| | | for (int i = 0; i < worksteplist.Count; i++) |
| | | { |
| | | // 创建一个新的字典 |
| | | Dictionary<object, object> dict = new Dictionary<object, object>(); |
| | | |
| | | if (worksteplist[i].data_sources == "ERP") //数据来源ERP |
| | | { |
| | | |
| | | //查询当前工单可修改数量=订单总数-已下达工单总数 |
| | | sql = @"select isnull(plan_qty,0) as plan_qty from TK_Wrk_Man |
| | | where sourceid=@sourceid and m_po=@sourcewo and wo_code=@wocode"; |
| | | dynamicParams.Add("@sourceid", worksteplist[i].sourceid); |
| | | dynamicParams.Add("@sourcewo", worksteplist[i].sourcewo); |
| | | dynamicParams.Add("@wocode", worksteplist[i].wocode); |
| | | var data = DapperHelper.selectdata(sql, dynamicParams); |
| | | //当前工单数量 |
| | | canupdate_qty = decimal.Parse(data.Rows[0]["plan_qty"].ToString()); |
| | | } |
| | | if (worksteplist[i].data_sources == "MES") //数据来源MES |
| | | { |
| | | if (worksteplist[i].sourceid == "" || worksteplist[i].sourceid == null) //无源单 |
| | | { |
| | | //查询当前工单可修改数量=工单总数 |
| | | sql = @"select plan_qty from TK_Wrk_Man where wo_code=@wo_code"; |
| | | dynamicParams.Add("@wo_code", worksteplist[i].wocode); |
| | | var data = DapperHelper.selectdata(sql, dynamicParams); |
| | | //当前工单工单数量 |
| | | canupdate_qty = decimal.Parse(data.Rows[0]["plan_qty"].ToString()); |
| | | } |
| | | else //有源单(报废补单) |
| | | { |
| | | //不控制 标识为-1 |
| | | canupdate_qty = -1; |
| | | } |
| | | } |
| | | //获取工序信息 |
| | | sql = @"select S.wo_code,S.seq,S.step_code as stepcode,T.stepname,S.stepprice,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, |
| | | S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty,S.plan_qty,(isnull(S.plan_qty,0)-(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0))) as delive_qty,S.isbott,S.isend |
| | | from TK_Wrk_Step S |
| | | left join TStep T on S.step_code=T.stepcode |
| | | where S.wo_code=@wocode order by S.seq "; |
| | | dynamicParams.Add("@wocode", worksteplist[i].wocode); |
| | | var data1 = DapperHelper.selectdata(sql, dynamicParams); |
| | | |
| | | // 向字典中添加数据 |
| | | dict.Add("canupdate_qty", canupdate_qty); |
| | | dict.Add("stepdata", data1); |
| | | // 将字典添加到列表中 |
| | | dir.Add(dict); |
| | | mes.code = "200"; |
| | | mes.count = dir.Count; |
| | | mes.message = "查询成功"; |
| | | mes.data = dir; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | #region[MES工单新增、编辑批量绑定提交] |
| | | public static ToMessage AddUpdateMesOrderList(string operType, List<WorkList> json, User us) |
| | | { |
| | | string sql = "", route_code = ""; |
| | | var dynamicParams = new DynamicParameters(); |
| | | List<object> list = new List<object>(); |
| | | try |
| | | { |
| | | dynamic dynObj = JObject.Parse(us.mesSetting); |
| | | bool route = dynObj.route; |
| | | if (!route) //工序版 |
| | | { |
| | | route_code = null; |
| | | } |
| | | if (operType == "Add") |
| | | { |
| | | for (int i = 0; i < json.Count; i++) |
| | | { |
| | | route_code = json[i].routecode; |
| | | //写入工单表 |
| | | sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep) |
| | | values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wo_code = json[i].wocode, |
| | | wotype = json[i].wotype, |
| | | status = json[i].wostatus, |
| | | wkshp_code = json[i].wkshopcode, |
| | | plan_qty = json[i].woqty, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString(), |
| | | materiel_code = json[i].partcode, |
| | | route_code = route_code, |
| | | sourceid = json[i].sourceid == "" ? null : json[i].sourceid, //无源单时赋值NULL |
| | | m_po = json[i].sourcewo, |
| | | saleOrderDeliveryDate = json[i].deliverydate, |
| | | plan_startdate = json[i].paystartdate, |
| | | plan_enddate = json[i].payenddate, |
| | | orderlev = "3",//优先级:特级(1) 紧急(2) 正常(3) |
| | | isaps = "N", //是否排产,默认N Y=是 N=否 |
| | | data_sources = json[i].data_sources, |
| | | isstep = json[i].isstep //是否关联工序 |
| | | } |
| | | }); |
| | | //写入工序任务表 |
| | | for (int j = 0; j < json[i].WorkListSub.Count; j++) |
| | | { |
| | | sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date) |
| | | values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wo_code = json[i].wocode, |
| | | seq = json[i].WorkListSub[j].stepseq, |
| | | step_code = json[i].WorkListSub[j].stepcode, |
| | | route_code = route_code, |
| | | stepprice = json[i].WorkListSub[j].stepprice, |
| | | plan_qty = json[i].woqty, |
| | | status = json[i].wostatus, |
| | | isbott = json[i].WorkListSub[j].isbott, |
| | | isend = json[i].WorkListSub[j].isend, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString() |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | bool aa = DapperHelper.DoTransaction(list); |
| | | if (aa) |
| | | { |
| | | //写入操作记录表 |
| | | LogHelper.DbOperateLog(us.usercode, "新增", "新增了工单:" + json[0].wocode, us.usertype); |
| | | mes.code = "200"; |
| | | mes.count = 0; |
| | | mes.message = "MES工单新建成功!"; |
| | | mes.data = null; |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "MES工单新建失败!"; |
| | | mes.data = null; |
| | | } |
| | | } |
| | | if (operType == "Update") |
| | | { |
| | | for (int i = 0; i < json.Count; i++) |
| | | { |
| | | route_code = json[i].routecode; |
| | | //修改工单表 |
| | | sql = @"update TK_Wrk_Man set wotype=@wotype,wkshp_code=@wkshp_code,plan_qty=@plan_qty,lm_user=@lm_user,lm_date=@lm_date, |
| | | materiel_code=@materiel_code,route_code=@route_code,sourceid=@sourceid,m_po=@m_po,saleOrderDeliveryDate=@saleOrderDeliveryDate,plan_startdate=@plan_startdate,plan_enddate=@plan_enddate,isstep=@isstep |
| | | where wo_code=@wo_code"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wo_code = json[i].wocode, |
| | | wotype = json[i].wotype, |
| | | wkshp_code = json[i].wkshopcode, |
| | | plan_qty = json[i].woqty, |
| | | materiel_code = json[i].partcode, |
| | | route_code = route_code, |
| | | sourceid = json[i].sourceid == "" ? null : json[i].sourceid, //无源单时赋值NULL |
| | | m_po = json[i].sourcewo, |
| | | saleOrderDeliveryDate = json[i].deliverydate, |
| | | plan_startdate = json[i].paystartdate, |
| | | plan_enddate = json[i].payenddate, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString(), |
| | | isstep = json[i].isstep //是否关联工序 |
| | | } |
| | | }); |
| | | //删除工单工序表 |
| | | sql = @"delete TK_Wrk_Step where wo_code=@wo_code"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wo_code = json[i].wocode |
| | | } |
| | | }); |
| | | //写入工单工序表 |
| | | for (int j = 0; j < json[i].WorkListSub.Count; j++) |
| | | { |
| | | sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date) |
| | | values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | wo_code = json[i].wocode, |
| | | seq = json[i].WorkListSub[j].stepseq, |
| | | step_code = json[i].WorkListSub[j].stepcode, |
| | | route_code = route_code, |
| | | stepprice = json[i].WorkListSub[j].stepprice, |
| | | plan_qty = json[i].woqty, |
| | | status = json[i].wostatus, |
| | | isbott = json[i].WorkListSub[j].isbott, |
| | | isend = json[i].WorkListSub[j].isend, |
| | | lm_user = us.usercode, |
| | | lm_date = DateTime.Now.ToString() |
| | | } |
| | | }); |
| | | } |
| | | //判断源头单据是否来源ERP |
| | | if (json[i].data_sources == "ERP") |
| | | { |
| | | //判断工单修改数量差值是否为0 |
| | | if (json[i].difference != "0") |
| | | { |
| | | string staus = ""; |
| | | //查询订单总数,已下达数量 |
| | | sql = @"select qty,relse_qty from TKimp_Ewo where id=@sourceid and wo=@sourcewo"; |
| | | dynamicParams.Add("@sourceid", json[i].sourceid); |
| | | dynamicParams.Add("@sourcewo", json[i].sourcewo); |
| | | var data0 = DapperHelper.selectdata(sql, dynamicParams); |
| | | //当前工单可修改数量=订单数量-非当前工单总下达工单数量 |
| | | decimal qty = decimal.Parse(data0.Rows[0]["qty"].ToString());//订单总数 |
| | | decimal relse_qty = decimal.Parse(data0.Rows[0]["relse_qty"].ToString());//订单已下达总数 |
| | | relse_qty = relse_qty + decimal.Parse(json[i].difference);//新的下达数量=原始下达数量+差值(正负) |
| | | if (qty == relse_qty) |
| | | { |
| | | staus = "CREATED"; //全部下达 |
| | | } |
| | | else |
| | | { |
| | | staus = "CREATING";//部分下达 |
| | | } |
| | | //更新订单表状态、已下达数量 |
| | | sql = @"update TKimp_Ewo set status=@status,relse_qty=@relse_qty where id=@sourceid and wo=@sourcewo"; |
| | | list.Add(new |
| | | { |
| | | str = sql, |
| | | parm = new |
| | | { |
| | | status = staus, |
| | | relse_qty = relse_qty, |
| | | sourceid = json[i].sourceid, |
| | | sourcewo = json[i].sourcewo |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | bool aa = DapperHelper.DoTransaction(list); |
| | | if (aa) |
| | | { |
| | | //写入操作记录表 |
| | | LogHelper.DbOperateLog(us.usercode, "修改", "修改了工单:" + string.Join(",", json.Select(j => j.wocode.ToString())), us.usertype); |
| | | mes.code = "200"; |
| | | mes.count = 0; |
| | | mes.message = "修改操作成功!"; |
| | | mes.data = null; |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "修改操作失败!"; |
| | | mes.data = null; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | #region[MES工单删除] |
| | | public static ToMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty, User us) |
| | | { |