如何在供应链上分配 "药物 "资产?

问题描述 投票:0回答:1

我正在用Hyperledger Composer设计一个供应链应用程序。我有一个药品资产,它看起来像这样。

asset Drug identified by DrugId {
  o String DrugId
  o String DrugName
  o Integer qty
  --> Trader presentOwner
}

我有一个制造商到批发商的交易。

transaction M2W {
  --> Drug drug
  o Integer qtyreq
  --> Wholesaler newOwner
}

我如何确保当我进行交易时,制造商的资产被保留,但数量减少,同时为批发商创建一个新的所需数量的资产?

hyperledger-fabric blockchain hyperledger hyperledger-composer
1个回答
0
投票

制作两个名为制造商和批发商的链码,并确保两者在同一渠道。

制造商链码由下面的方法组成。

item(ctx, DrugName, current quantity, quantity_to_be_supplied_to_wholesaler){
current quantity= current quantity-quantity_to_be_supplied_to_wholesaler;
drug={
DrugName
current quantity,
quantity_to_be_supplied_to_wholesaler,
}

把这些信息保存到你的账本上

ctx.stub.putstate(drugID, Buffer.from(JSON.stringify(drug)));

您必须实现query_drug来查询链码上存储的药品列表。

在批发商的链码上,你可以通过使用

 const response = await ctx.stub.invokeChaincode('Manufacturer', ['queryDrugs', drugId ], 'channel_name');

然后你可以使用检索药物记录。

 var r1=response.payload; //getting payload from response

 var s1=r1.toString(); // converting payload buffer to string.
 var s=JSON.parse(s1); //convert string to JSON object.
 var qty=s['quantity_to_be_supplied_to_wholesaler'];

您可以通过以下方式将数量添加到您的批发商记录中。

current quantity=current quantity+qty;

然后,您可以将此数量添加到分类账中,使用

ctx.stub.putState(ID, qty)。

看起来有点乱,但希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.