예제 #1
0
        /// <summary>
        /// 物资收料
        /// </summary>
        /// <param name="tk_form">单据表单信息</param>
        /// <param name="MSInfos">物资具体信息</param>
        /// <returns></returns>
        public string receive(string tk_form, string MSInfos, int wfIdx)
        {
            string   _return = String.Empty, _code = MConvert.getValue(tk_form, "code");
            string   _wfId = (new WFIndex(wfIdx, api)).addInstance("施工工程收料单号:" + _code, "");
            SqlTrans trans = new SqlTrans(api);

            try
            {
                string[] _kv = MConvert.toKV(tk_form);
                string   _users = trans.execScalar(MString.getSelectStr(R.Table.WF_INSTANCE, "owner", "id=" + _wfId)), _proId = MConvert.getValue(tk_form, "proId");
                string   _newID  = trans.addRow(R.Table.TK_WH_RECEIVE, _kv[0] + ",wfId,users,observers", _kv[1] + "," + _wfId + ",'" + _users + "','" + _users + "'");
                string[] infoAry = MSInfos.Split('^');
                for (int i = 0, _len = infoAry.Length; i < _len; i++)
                {
                    string[] _tKV = MConvert.toKV(infoAry[i]);
                    trans.execNonQuery(MString.getInsertStr(R.Table.TK_WH_RECEIVE_DETAIL, _tKV[0] + ", oid, proId", _tKV[1] + "," + _newID + "," + _proId));
                }
                _return = _newID;
                trans.commit();
            }
            catch (Exception e)
            {
                trans.rollback();
                _return = Native.getErrorMsg(e.Message);
            }
            finally {
                trans.close();
            }
            return(_return);
        }
예제 #2
0
        /// <summary>
        /// toDefinition: 通过传递过来的一批json字符串生成工作流定义
        /// </summary>
        /// <param name="_definitionJson">一批以※间隔的json字符串</param>
        /// <returns>生成工作流定义成功之后返回定义表中关联的id</returns>
        public string toDefinition(string _definitionJson)
        {
            string   _returnVal = String.Empty;
            SqlTrans trans      = new SqlTrans(api);

            try
            {
                string[]      _jsonAry = _definitionJson.Split(SCHAR);
                string        _idx = String.Empty, _json = String.Empty, _exist = String.Empty;
                StringBuilder _ids = new StringBuilder();
                string []     _kv;
                for (int i = 0, _len = _jsonAry.GetLength(0); i < _len; i++)
                {
                    _json  = _jsonAry[i];
                    _idx   = MConvert.getValue(_json, "idx");
                    _exist = trans.execScalar("select 1 from {0} where oid={1} and idx='{2}';", R.Table.WF_DEFINITION, indexID, _idx);
                    if (Native.isEmpty(_exist))
                    {
                        _kv = MConvert.toKV(_json);
                        string _id = trans.execScalar("insert into {0} ({1}) values({2});select SCOPE_IDENTITY();", R.Table.WF_DEFINITION, _kv[0] + ",oid", _kv[1] + "," + indexID);
                        _ids.Append(_id + ",");
                    }
                    else
                    {
                        break;
                    }
                }
                ArrayList _list = (ArrayList)trans.execArrayList("select idx, id from {0} where oid={1};", R.Table.WF_DEFINITION, indexID)[0];
                Json      _hash = toHashJson(_list);
                if (_ids.Length > 0)
                {
                    _ids.Remove(_ids.Length - 1, 1);
                }
                else
                {
                    _ids = getIDs(_hash);
                }
                string _next = getUpdateVal("next", _hash), _pre = getUpdateVal("pre", _hash);
                _returnVal = _ids.ToString();
                trans.execNonQuery("update {0} set {1}, {2} where id in ({3});", R.Table.WF_DEFINITION, _next, _pre, _returnVal);
                trans.commit();
            }
            catch (Exception e)
            {
                trans.rollback();
                _returnVal = Native.getErrorMsg(e.Message.ToString());
            }
            finally {
                trans.close();
            }
            return(_returnVal);
        }
예제 #3
0
        /// <summary>
        /// addTreeNode: 添加树节点
        /// </summary>
        /// <param name="_table">表名</param>
        /// <param name="_pid">父节点ID</param>
        /// <param name="_key">字段列表</param>
        /// <param name="_values">值列表</param>
        /// <returns>返回当前树节点ID</returns>
        public string addTreeNode(string _table, int _pid, string jsonStr)
        {
            SqlTrans _trans = new SqlTrans(this);
            string   _val   = String.Empty;

            try
            {
                string[] _kv = MConvert.toKV(jsonStr);
                _val = _trans.addTreeNode(_table, _pid, _kv[0], _kv[1]);
                _trans.commit();
            }
            catch (Exception e)
            {
                _trans.rollback();
                _val = Native.getErrorMsg(e.Message);
            }
            finally {
                _trans.close();
            }
            return(_val);
        }
예제 #4
0
        /// <summary>
        /// start: 启动流程
        /// </summary>
        /// <param name="wfID">流程实例ID值</param>
        /// <param name="jsonStr">json字符串</param>
        /// <param name="ext">扩展信息</param>
        /// <returns></returns>
        public string start(int wfID, string jsonStr, string ext = "")
        {
            SqlTrans trans   = new SqlTrans(api);
            string   _return = String.Empty;

            try
            {
                Json _sNode = trans.execJson(MString.getSelectStr(R.Table.WF_INSTANCE, "oid,state", "id=" + wfID));
                if (_sNode.getInt("state") == 0)
                {
                    Json     _fNode  = trans.execJson(MString.getSelectStr(R.Table.WF_DEFINITION, "*", "oid=" + _sNode.getValue("oid") + ", type=10"));
                    string   _kt     = "oid,definedNodeID,nodeName,next,pre,state,type,owner,ext";
                    string   _owners = trans.getAllUsers(_fNode.getValue("users"), _fNode.getValue("roles"));
                    string   _vt     = _fNode.getValue("oid") + "," + _fNode.getValue("id") + ",'" + _fNode.getValue("nodeName") + "','" + _fNode.getValue("next") + "',0,1,10,'" + _owners + "','" + ext + "'";
                    string[] _js     = MConvert.toKV(jsonStr);
                    if (!Native.isEmpty(_js[0]))
                    {
                        _kt += "," + _js[0]; _vt += "," + _js[1];
                    }
                    _return = trans.addTreeNode(R.Table.WF_INSTANCE, wfID, _kt, _vt);
                }
                else
                {
                    _return = Native.getErrorMsg("流程已经结束或取消!");
                }
                trans.commit();
            }
            catch (Exception ex)
            {
                _return = Native.getErrorMsg(ex.Message + "--WFInstance--start");
                trans.rollback();
            }
            finally
            {
                trans.close();
            }
            return(_return);
        }
예제 #5
0
        /// <summary>
        /// 物资退料
        /// </summary>
        /// <param name="tk_form">单据表单信息</param>
        /// <param name="MSInfos">物资具体信息</param>
        /// <returns></returns>
        public string back(string tk_form, string MSInfos, int wfIdx)
        {
            string   _return = String.Empty, _code = MConvert.getValue(tk_form, "code"), _whId = MConvert.getValue(tk_form, "whId"), _proId = MConvert.getValue(tk_form, "proId");
            string   _wfId = (new WFIndex(wfIdx, api)).addInstance("退料单号:" + _code, "");
            SqlTrans trans = new SqlTrans(api);

            try
            {
                string[] _kv     = MConvert.toKV(tk_form);
                string   _users  = trans.execScalar(MString.getSelectStr(R.Table.WF_INSTANCE, "owner", "id=" + _wfId));
                string   _newID  = trans.addRow(R.Table.TK_WH_BACK, _kv[0] + ",wfId,users,observers", _kv[1] + "," + _wfId + ",'" + _users + "','" + _users + "'");
                string[] infoAry = MSInfos.Split('^');
                for (int i = 0, _len = infoAry.Length; i < _len; i++)
                {
                    string    _sInfo = infoAry[i], _pid = String.Empty, _msId = MConvert.getValue(_sInfo, "msId");
                    string[]  _tKV    = MConvert.toKV(_sInfo);
                    double    _num    = MConvert.getDouble(_sInfo, "number");
                    ArrayList _stocks = trans.execJsonList("select {0} from {1} where msId={2} and remainNum<>0 and batchId<>0 and proId={3} order by cTime desc, id desc;", "id,whId,batchId,batchCode,batchPrice,number,remainNum", R.Table.TK_WH_SEND_DETAIL, _msId, _proId);
                    for (int _n = 0; _n < _stocks.Count; _n++)
                    {
                        if (_num < 0 || _num == 0)
                        {
                            break;
                        }
                        Json   _stock = (Json)_stocks[_n];
                        double _realNum = 0, _price = _stock.getDouble("batchPrice");
                        string _k = String.Empty, _v = String.Empty, _batchId = "0", _batchCode = "", _newWhId = _whId, _sendId = _stock.getValue("id"), _sourceId = _stock.getValue("whId");
                        _num = _num - _stock.getDouble("remainNum");
                        if (Native.isEmpty(_newWhId) || _newWhId == "0")
                        {
                            _newWhId = _sourceId; _batchId = _stock.getValue("batchId"); _batchCode = _stock.getValue("batchCode");
                        }
                        if (_num > 0)
                        {
                            _realNum = _stock.getDouble("remainNum");
                            if (Native.isEmpty(_pid))
                            {
                                _k   = "msId,sourceId,proId,whId,oid,planNum";
                                _v   = _msId + "," + _sourceId + "," + _proId + "," + _newWhId + "," + _newID + "," + MConvert.getValue(_sInfo, "planNum");
                                _pid = trans.execScalar(MString.getInsertStr(R.Table.TK_WH_BACK_DETAIL, _k, _v, true));
                            }
                            _k = "sendId,msId,sourceId,proId,whId,oid,batchId,batchCode,price,number,sum";
                            _v = _sendId + "," + _msId + "," + _sourceId + "," + _proId + "," + _newWhId + "," + _newID + "," + _batchId + ",'" + _batchCode + "'," + _price + "," + _realNum + "," + _price * _realNum;
                            trans.addTreeNode(R.Table.TK_WH_BACK_DETAIL, Convert.ToInt16(_pid), _k, _v);
                            trans.execNonQuery("update " + R.Table.TK_WH_BACK_DETAIL + " set sum=sum+" + (_price * _realNum) + ", number=number+" + _realNum + " where id=" + _pid);
                        }
                        else
                        {
                            _realNum = _stock.getDouble("remainNum") + _num;
                            if (!Native.isEmpty(_pid))
                            {
                                _k = "sendId,msId,sourceId,proId,whId,oid,batchId,batchCode,price,number,sum";
                                _v = _sendId + "," + _msId + "," + _sourceId + "," + _proId + "," + _newWhId + "," + _newID + "," + _batchId + ",'" + _batchCode + "'," + _price + "," + _realNum + "," + _price * _realNum;
                                trans.addTreeNode(R.Table.TK_WH_BACK_DETAIL, Convert.ToInt16(_pid), _k, _v);
                                trans.execNonQuery("update " + R.Table.TK_WH_BACK_DETAIL + " set sum=sum+" + (_price * _realNum) + ", number=number+" + _realNum + " where id=" + _pid);
                            }
                            else
                            {
                                trans.addRow(R.Table.TK_WH_BACK_DETAIL, _tKV[0] + ",sendId,proId,whId,sourceId,oid,batchId,batchCode,price,sum,planSum", _tKV[1] + "," + _sendId + "," + _proId + "," + _newWhId + "," + _sourceId + "," + _newID + "," + _batchId + ",'" + _batchCode + "'," + _price + "," + (_realNum * _price) + "," + (MConvert.getDouble(_sInfo, "planNum") * _price));
                            }
                        }
                    }
                }
                _return = _newID;
                trans.commit();
            }
            catch (Exception e)
            {
                trans.rollback();
                _return = Native.getErrorMsg(e.Message);
            }
            finally
            {
                trans.close();
            }
            return(_return);
        }
예제 #6
0
 /// <summary>
 /// insert: 根据表名(table), json字符串(jsonStr)向数据库插入数据
 /// </summary>
 /// <param name="table">根据表名(table)</param>
 /// <param name="jsonStr">json字符串</param>
 /// <returns></returns>
 public string insert(string table, string jsonStr)
 {
     string[] _kv = MConvert.toKV(jsonStr);
     return(insert(table, _kv[0], _kv[1]));
 }