| | |
| | | public static ToMessage mes = new ToMessage(); //定义全局返回信息对象 |
| | | |
| | | |
| | | #region[生产开报工:自制工序任务开报工判断:工单+工序条码] |
| | | #region[生产开报工:自制工序任务开报工判断:工单+工序条码,按序生产] |
| | | /// <summary> |
| | | /// 扫码信息为工单+工序条码 |
| | | /// </summary> |
| | |
| | | rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //工序编码 |
| | | rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //工序名称 |
| | | rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //工序描述 |
| | | rt.stepprice= data.Rows[0]["STEPPRICE"].ToString(); //工序工价 |
| | | rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //工序工价 |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | |
| | | flwtype = data.Rows[0]["FLWTYPE"].ToString();//获取工序属性 |
| | |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty; //未报数量=任务数量-已报数量-不良数量-工废数量-料废数量 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty; //已报数量=报工数量+不良数量+工废数量+料废数量 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //已报数量=报工数量+不良数量+工废数量+料废数量 |
| | | mes.code = "200"; |
| | | mes.count = 1; |
| | | mes.message = "查找成功!"; |
| | |
| | | decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道总工废数量 |
| | | decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道总料废数量 |
| | | //本道剩余可报数量=上道报工总数量-本道报工总数量-本道不良总数量-本道工废总数-本道料废总数 |
| | | decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty- materielbad_qty; |
| | | decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (sybqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | } |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = sybqty; //未报数量=本道剩余可报数量 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty;//已报数量=本道报工总数量+本道报工总不良+本道工废总数+本道料废总数 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty;//已报数量=本道报工总数量+本道报工总不良+本道工废总数+本道料废总数 |
| | | mes.code = "200"; |
| | | mes.count = 1; |
| | | mes.message = "弹窗报工界面!"; |
| | |
| | | decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道总工废数量 |
| | | decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道总料废数量 |
| | | //本道剩余可报数量=上道收料总数量-本道报工总数量-本道不良总数量-本道总工废数量-本道总料废数量 |
| | | decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty- materielbad_qty; |
| | | decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (sybqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | } |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = sybqty; //未报数量=本道剩余可报数量 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty+materielbad_qty; //已报数量=本道报工总数量+本道报工总不良+本道总工废数+本道总料废数 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //已报数量=本道报工总数量+本道报工总不良+本道总工废数+本道总料废数 |
| | | mes.code = "200"; |
| | | mes.count = 1; |
| | | mes.message = "查找成功!"; |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region[生产开报工:外协工序任务开报工判断:工单号+工序] |
| | | #region[生产开报工:外协工序任务开报工判断:工单号+工序,按序收发料] |
| | | /// <summary> |
| | | /// 生产开报工:外协工序任务开报工判断:工单号+工序 |
| | | /// </summary> |
| | |
| | | decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 不良数量 |
| | | decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //工废数量 |
| | | decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //料废数量 |
| | | decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty-materielbad_qty; //剩余可发数量 |
| | | decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //剩余可发数量 |
| | | if (kfqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道工废数量 |
| | | decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道料废数量 |
| | | //本道剩余可发数量=上道报工数量-本道发料数量-本道不良数量-本道工废数量-本道料废数量 |
| | | decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty- materielbad_qty; |
| | | decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (sybqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | } |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = sybqty; //未发数量=剩余可发数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty+ materielbad_qty; //已发数量= 本道发料数量+本道不良数量+本道工废数量+本道料废数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //已发数量= 本道发料数量+本道不良数量+本道工废数量+本道料废数量 |
| | | rt.startqty = sybqty; //收料数量=剩余可发数量 |
| | | |
| | | mes.code = "200"; |
| | |
| | | decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道工废数量 |
| | | decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道料废数量 |
| | | //本道剩余可发数量=上道收料数量-本道发料数量-本道不良数量-本道工废数量-本道料废数量 |
| | | decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty-materielbad_qty; |
| | | decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (sybqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | } |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = sybqty; //未发数量=剩余可发数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //已发数量= 本道发料数量+本道不良数量+本道工废数量+本道料废数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //已发数量= 本道发料数量+本道不良数量+本道工废数量+本道料废数量 |
| | | rt.startqty = sybqty; //收料数量=剩余可发数量 |
| | | |
| | | mes.code = "200"; |
| | |
| | | decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道工废数量 |
| | | decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道料废数量 |
| | | //剩余可发数量=本道发料数量-本道收料数量-本道不良数量-本道工废数量-本道料废数量 |
| | | decimal ksqty = fqty - sqty - ng_qty - laborbad_qty-materielbad_qty; |
| | | decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (ksqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = ksqty; //未收数量=本道发料数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //已收数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //已收数量 |
| | | rt.startqty = ksqty; //收料数量=本道发料数量 |
| | | |
| | | data0.Merge(data1);//将指定的dt合并 |
| | |
| | | decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道工废数量 |
| | | decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道料废数量 |
| | | //剩余可发数量=本道发料数量-本道收料数量-本道不良数量-本道工废数量-本道料废数量 |
| | | decimal ksqty = fqty - sqty - ng_qty - laborbad_qty- materielbad_qty; |
| | | decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (ksqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = ksqty; //未收数量=本道发料数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty; //已收数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //已收数量 |
| | | rt.startqty = ksqty; //收料数量=本道发料数量 |
| | | |
| | | data1.Merge(data2);//将指定的dt合并 |
| | |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region[生产开报工:自制工序任务开报工判断:工单+工序条码,不按序生产] |
| | | /// <summary> |
| | | /// 扫码信息为工单+工序条码 |
| | | /// </summary> |
| | | /// <param name="ordercode">工单编号</param> |
| | | /// <param name="stepcode">工序编码</param> |
| | | /// <returns></returns> |
| | | public static ToMessage NoZZEncodingSeach(string ordercode, string stepcode) |
| | | { |
| | | var sql = ""; |
| | | string flwtype = ""; //工序属性 |
| | | string isbott = ""; //首道工序 |
| | | string isend = ""; //末道工序 |
| | | List<object> list = new List<object>(); |
| | | ScanStartReportData rt = new ScanStartReportData(); |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | //判断当前工单是否关闭 |
| | | sql = @"select * from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | var da0 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (da0.Rows.Count > 0) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工单已关闭,不允许开报工操作!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | |
| | | //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.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.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]["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(); //产品名称 |
| | | rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //产品规格 |
| | | rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //工序编码 |
| | | rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //工序名称 |
| | | rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //工序描述 |
| | | rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //工序工价 |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | |
| | | flwtype = data.Rows[0]["FLWTYPE"].ToString();//获取工序属性 |
| | | isbott = data.Rows[0]["ISBOTT"].ToString();//首道工序 |
| | | isend = data.Rows[0]["ISEND"].ToString();//末道工序 |
| | | rt.seq = data.Rows[0]["SEQ"].ToString();//工序序号 |
| | | |
| | | //获取当前工序下道工序 |
| | | sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A |
| | | left join TStep T on A.step_code=T.stepcode |
| | | where A.wo_code=@ordercode and A.seq=@seq+1 "; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString())); |
| | | var dt = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (dt.Rows.Count > 0) //有下道工序 |
| | | { |
| | | rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码 |
| | | rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称 |
| | | rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //下道工序工价 |
| | | } |
| | | if (isend == "Y") //当前工序是末道工序 |
| | | { |
| | | rt.nextstepcode = "";//data.Rows[0]["STEPCODE"].ToString();//当前工序编码 |
| | | rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//当前工序名称 |
| | | rt.nextstepprice = "";// data.Rows[0]["STEPPRICE"].ToString();//当前工序工价 |
| | | } |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工序任务不存在!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | switch (flwtype) |
| | | { |
| | | case "Z": //自制工序 |
| | | //首道工序时,判断是否有报工记录 |
| | | sql = @"select * from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@stepcode", stepcode); |
| | | var data1 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (data1.Rows.Count > 0) |
| | | { |
| | | decimal good_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("GOOD_QTY")).Sum(); //报工总数量 |
| | | decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum(); //不良数量 |
| | | decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //工废数量 |
| | | decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //料废数量 |
| | | //剩余可报工数量=任务数量-(报工数量+不良数量+工废废数量+料废数量) |
| | | decimal kbqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - (good_qty + ng_qty + laborbad_qty + materielbad_qty); |
| | | if (kbqty <= 0)//无可报工数量 |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工序无可报工数量!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | else |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty; //未报数量=任务数量-已报数量-不良数量-工废数量-料废数量 |
| | | rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //已报数量=报工数量+不良数量+工废数量+料废数量 |
| | | mes.code = "200"; |
| | | mes.count = 1; |
| | | mes.message = "查找成功!"; |
| | | mes.data = rt; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //未报数量 |
| | | rt.reportqty = 0; //已报数量 |
| | | mes.code = "200"; |
| | | mes.count = 1; |
| | | mes.message = "查找成功!"; |
| | | mes.data = rt; |
| | | } |
| | | break; |
| | | case "W": //外协工序 |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工单工序任务为外协,请前往外协操作标签页操作!"; |
| | | mes.data = null; |
| | | break; |
| | | default: //自制+外协工序 |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | #region[生产开报工:外协工序任务开报工判断:工单号+工序,按序收发料] |
| | | /// <summary> |
| | | /// 扫码信息为工单+工序条码 |
| | | /// </summary> |
| | | /// <param name="ordercode">工单编号</param> |
| | | /// <param name="stepcode">工序编码</param> |
| | | /// <returns></returns> |
| | | public static ToMessage NoWXEncodingSeach(string SelectType, string ordercode, string stepcode) |
| | | { |
| | | var sql = ""; |
| | | string flwtype = ""; //工序属性 |
| | | string isbott = ""; //首道工序 |
| | | string isend = ""; //末道工序 |
| | | List<object> list = new List<object>(); |
| | | ScanStartReportDataOut rt = new ScanStartReportDataOut(); |
| | | var dynamicParams = new DynamicParameters(); |
| | | try |
| | | { |
| | | //判断当前工单是否关闭 |
| | | sql = @"select * from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | var da0 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (da0.Rows.Count > 0) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工单已关闭,不允许开报工操作!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | |
| | | //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.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.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]["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(); //产品名称 |
| | | rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //产品规格 |
| | | rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //工序编码 |
| | | rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //工序名称 |
| | | rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //工序描述 |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //工序工价 |
| | | flwtype = data.Rows[0]["FLWTYPE"].ToString();//获取工序属性 |
| | | isbott = data.Rows[0]["ISBOTT"].ToString();//首道工序 |
| | | isend = data.Rows[0]["ISEND"].ToString();//末道工序 |
| | | rt.seq = data.Rows[0]["SEQ"].ToString();//工序序号 |
| | | |
| | | //获取当前工序下道工序 |
| | | sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A |
| | | left join TStep T on A.step_code=T.stepcode |
| | | where A.wo_code=@ordercode and A.seq=@seq+1 "; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString())); |
| | | var dt = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (dt.Rows.Count > 0) //有下道工序 |
| | | { |
| | | rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码 |
| | | rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称 |
| | | rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //下道工序工价 |
| | | } |
| | | if (isend == "Y") //当前工序是末道工序 |
| | | { |
| | | rt.nextstepcode = "";// data.Rows[0]["STEPCODE"].ToString();//当前工序编码 |
| | | rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//当前工序名称 |
| | | rt.nextstepprice = ""; //data.Rows[0]["NEXTSTEPPRICE"].ToString();//下道工序工价 |
| | | } |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前扫码工序任务不存在!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | switch (SelectType) |
| | | { |
| | | case "OUT": //发料 |
| | | switch (flwtype) |
| | | { |
| | | case "Z": |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前标签为自制标签,请前往自制操作标签页扫码!"; |
| | | mes.data = null; |
| | | break; |
| | | case "W": |
| | | //1.判断是否有发料记录 |
| | | sql = @"select * 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'"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@stepcode", stepcode); |
| | | var data0 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (data0.Rows.Count > 0) //有发料记录 |
| | | { |
| | | decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum(); //发料数量 |
| | | decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 不良数量 |
| | | decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //工废数量 |
| | | decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //料废数量 |
| | | decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //剩余可发数量 |
| | | if (kfqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工序无可发料数量!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | else |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = kfqty; //未发数量=剩余可发数量 |
| | | rt.reportqty = fqty; //已发数量= 发料数量 |
| | | rt.startqty = kfqty; //发料数量=剩余可发数量 |
| | | mes.code = "200"; |
| | | mes.count = 2; |
| | | mes.message = "查询成功!"; |
| | | mes.data = rt; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //未发数量=任务数量 |
| | | rt.reportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //已发数量=任务数量 |
| | | rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //发料数量=任务数量 |
| | | mes.code = "200"; |
| | | mes.count = 2; |
| | | mes.message = "弹窗发料界面!"; |
| | | mes.data = rt; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | break; |
| | | case "IN": //收料 |
| | | switch (flwtype) |
| | | { |
| | | case "Z"://自制 |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前标签为自制标签,请前往自制操作标签页扫码!"; |
| | | mes.data = null; |
| | | break; |
| | | case "W": |
| | | |
| | | //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.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' |
| | | group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@stepcode", stepcode); |
| | | var data0 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (data0.Rows.Count > 0) //有发料记录 |
| | | { |
| | | //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.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' |
| | | group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code"; |
| | | dynamicParams.Add("@ordercode", ordercode); |
| | | dynamicParams.Add("@stepcode", stepcode); |
| | | var data1 = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (data1.Rows.Count > 0) //有收料记录 |
| | | { |
| | | decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//本道发料数量 |
| | | decimal sqty = data1.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum();//本道收料数量 |
| | | decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();//本道不良数量 |
| | | decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum(); //本道工废数量 |
| | | decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum(); //本道料废数量 |
| | | //剩余可发数量=本道发料数量-本道收料数量-本道不良数量-本道工废数量-本道料废数量 |
| | | decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty; |
| | | if (ksqty <= 0) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " 无可收料数量!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | else |
| | | { |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = ksqty; //未收数量=本道发料数量 |
| | | rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty; //已收数量 |
| | | rt.startqty = ksqty; //收料数量=本道发料数量 |
| | | |
| | | data0.Merge(data1);//将指定的dt合并 |
| | | rt.list = data0.AsEnumerable().GroupBy(r => new |
| | | { |
| | | wo_code = r["wo_code"], |
| | | step_code = r["step_code"], |
| | | code = r["code"], |
| | | name = r["name"] |
| | | }).Select(g => new |
| | | { |
| | | Name = g.Key.code, |
| | | tp = g.Key.name, |
| | | fqty = g.Sum(i => (decimal)i["fqty"]), |
| | | sqty = g.Sum(i => (decimal)i["sqty"]), |
| | | ng_qty = g.Sum(i => (decimal)i["ng_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; |
| | | mes.message = "弹窗收料界面!"; |
| | | mes.data = rt; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//本道发料数量 |
| | | rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量 |
| | | rt.noreportqty = fqty; //未收数量=本道发料数量 |
| | | rt.reportqty = 0; //已收数量 |
| | | rt.startqty = fqty; //收料数量=本道发料数量 |
| | | // |
| | | data0.Merge(data1);//将指定的dt合并 |
| | | rt.list = data0.AsEnumerable().GroupBy(r => new |
| | | { |
| | | wo_code = r["wo_code"], |
| | | step_code = r["step_code"], |
| | | code = r["code"], |
| | | name = r["name"] |
| | | }).Select(g => new |
| | | { |
| | | Name = g.Key.code, |
| | | tp = g.Key.name, |
| | | fqty = g.Sum(i => (decimal)i["fqty"]), |
| | | sqty = g.Sum(i => (decimal)i["sqty"]), |
| | | ng_qty = g.Sum(i => (decimal)i["ng_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; |
| | | mes.message = "弹窗收料界面!"; |
| | | mes.data = rt; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " 未发料,请先发料!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.message = e.Message; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | return mes; |
| | | } |
| | | #endregion |
| | | } |
| | | } |