EMlab-generation Documentation  1.0
Documentation of the EMLab-Generation model.
ProcessAcceptedPowerPlantDispatchRoleinSR.java
1 package emlab.gen.role.capacitymechanisms;
2 
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.transaction.annotation.Transactional;
5 
6 import agentspring.role.AbstractRole;
7 import agentspring.role.Role;
8 import agentspring.role.RoleComponent;
22 
28 @RoleComponent
29 public class ProcessAcceptedPowerPlantDispatchRoleinSR extends AbstractRole<StrategicReserveOperator> implements Role<StrategicReserveOperator>{
30 
31  @Autowired
32  Reps reps;
33 
34  @Autowired
35  SegmentLoadRepository segmentLoadRepository;
36 
37  @Autowired
38  MarketRepository marketRepository;
39 
40  @Autowired
41  BidRepository bidRepository;
42 
43  @Autowired
44  PowerPlantDispatchPlanRepository plantDispatchPlanRepository;
45 
46  @Autowired
47  ZoneRepository zoneRepository;
48 
49  @Override
50  @Transactional
51  public void act(StrategicReserveOperator strategicReserveOperator) {
52 
53  Zone curZone = strategicReserveOperator.getZone();
54  //logger.warn("Entering Zone loop");
55  ElectricitySpotMarket market = marketRepository.findElectricitySpotMarketForZone(curZone);
56  //logger.warn(market.getName());
57  for (Segment segment : reps.segmentRepository.findAll()) {
58  //logger.warn("Entering Segment Loop" + segment.getLengthInHours());
59  SegmentClearingPoint scp = reps.segmentClearingPointRepository.findOneSegmentClearingPointForMarketSegmentAndTime(
60  getCurrentTick(), segment, market, false);
61  //logger.warn("Clearing Price " + scp.getPrice());
62  for (PowerPlantDispatchPlan plan : reps.powerPlantDispatchPlanRepository
63  .findAllPowerPlantDispatchPlansForSegmentForTime(segment, getCurrentTick(), false)) {
64  //logger.warn("Entering PPDP LOOP Successfully" +plan.getOldPrice());
65  if (plan.getBiddingMarket().getNodeId().intValue()== market.getNodeId().intValue()){
66  //logger.warn("Bidding Market LOOP entered successfully " + plan.getBiddingMarket().getName());
67  if (plan.getStatus()>=2){
68  //logger.warn("Checking Accepted Bids finding accepted bids " +plan.getStatus());
69  if (plan.getSRstatus() <= -10){
70  //logger.warn("Checking SR Status Contracted " + plan.getSRstatus());
71  double moneyReturned = ((plan.getAcceptedAmount()*scp.getPrice()*segment.getLengthInHours())- ((plan.getAcceptedAmount()*plan.getOldPrice()*segment.getLengthInHours())));
72  // Price mark up /(plan.getPowerPlant().getOwner().getPriceMarkUp())
73  //logger.warn("Money Earned " +(plan.getAcceptedAmount()*scp.getPrice()*segment.getLengthInHours()));
74  //logger.warn("Money Kept "+ (plan.getAcceptedAmount()*plan.getOldPrice()*segment.getLengthInHours()));
75  //logger.warn("money Returned " +moneyReturned);
76 
77  //logger.warn("SRO "+ strategicReserveOperator.getName() +" CASH Before" +strategicReserveOperator.getCash());
78  //logger.warn("Owner " + plan.getBidder().getName() + "money After" +plan.getBidder().getCash());
79 
80  reps.nonTransactionalCreateRepository.createCashFlow(plan.getBidder(), strategicReserveOperator, moneyReturned, CashFlow.STRRESPAYMENT, getCurrentTick(), plan.getPowerPlant());
81 
82  //logger.warn("SRO's CASH After" +strategicReserveOperator.getCash());
83  //logger.warn("Owner " + plan.getBidder().getName() + " money After" +plan.getBidder().getCash());
84  }
85  }
86  }
87 
88  }
89 
90  }
91  }
92 }