/// <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); }
/// <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); }
/// <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); }