public dynamic GetProcessWorkSteps(string id)
        {
            var pQuery = ParamQuery.Instance().Select("*").AndWhere("ProcessRouteID", id);
            var re     = new PRS_ProcessWorkStepsService().GetModelList(pQuery);

            return(re);
        }
예제 #2
0
        public dynamic Get(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
<settings defaultOrderBy='id'>
    <select>*</select>
    <from>PRS_ProcessWorkSteps</from>
    <where defaultForAll='true' defaultCp='equal' defaultIgnoreEmpty='true' >
        <field name='WorkStepsName'		cp='equal'></field>   
    </where>
</settings>");
            var service = new PRS_ProcessWorkStepsService();
            var pQuery  = query.ToParamQuery();
            var result  = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
        public void Edit(dynamic data)
        {
            var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
    <settings>
        <table>
            PRS_ProcessWorkSteps
        </table>
        <where>
            <field name='ID' cp='equal'></field>
        </where>
    </settings>");
            var service     = new PRS_ProcessWorkStepsService();
            //var result = service.Edit(null, listWrapper, data);
            //记录更改工时定额的工步的ID
            string ids = "";
            //用于保存直接更改工艺路线工时的脚本字符串
            string mids = "";
            //用于保存更改工步工时定额的脚本数据
            string updateSteps = "";
            //判断更改后执行结果的受影响行数
            int updatePPR = 0;

            if (data.list.updated.ToString() != "[]")
            {
                foreach (JToken row in data["list"]["updated"].Children())
                {
                    ids += row["ID"];
                    //获取工步ID
                    var getId = row["ID"] ?? "";

                    if (!string.IsNullOrEmpty(getId.ToString()))
                    {
                        //工步ID不为空时,生成更改工步工时定额的脚本
                        ids         += ",";
                        updateSteps += string.Format(@"UPDATE a
SET ManHours= '{0}'
FROM PRS_ProcessWorkSteps  a
WHERE ID ='{1}'", row["ManHours"].ToString(), row["ID"].ToString());
                    }
                    //当工步ID为空时表示是一个没有工步的工序,直接生成更改工艺路线工时定额的脚本
                    else
                    {
                        mids += string.Format(@"UPDATE a
SET ManHour= '{0}'
FROM MES_BN_ProductProcessRoute  a
WHERE ID ='{1}'", row["ManHours"].ToString(), row["mID"].ToString());
                        updatePPR++;
                    }
                }
                if (ids.Length > 0)
                {
                    //将多个工步id最后的,号去掉,此时保存的id字符串可以直接作为sql中的in条件
                    ids = ids.Remove(ids.Length - 1, 1);
                }
            }
            int isFalse = 0;
            var db      = Db.Context("Mms");

            using (db.UseTransaction(true))
            {
                //有工步的工艺路线,编辑工步工时同时将工序工时汇总
                if (!string.IsNullOrEmpty(ids))
                {
                    //执行编辑工步工时定额,判断返回值
                    var res = db.Sql(updateSteps).Execute();
                    if (res < updatePPR)
                    {
                        db.Rollback();
                        isFalse++;
                    }
                    //使用更改工步关联工序的工时定额的存储过程
                    var document = db.StoredProcedure("CalcProcessManHour")
                                   .Parameter("stepids", ids);
                    int ret = document.Execute();
                    if (ret <= 0)
                    {
                        db.Rollback();
                        isFalse++;
                    }
                }
                //没有工步的工序,直接更改工序中的工时定额。
                if (!string.IsNullOrEmpty(mids))
                {
                    var res = db.Sql(mids).Execute();
                    if (res < updatePPR)
                    {
                        db.Rollback();
                        isFalse++;
                    }
                }
                if (isFalse > 0)
                {
                    db.Rollback();
                }
                else
                {
                    db.Commit();
                }
            }
        }