The fact that you require 6 output pins for the pump relays and 12 input pins for the switches, that almost maxes out the 20 total I/O pin that a 328 based arduino board offers. That leaves little room for expansion. So you could either start off with a mega board which has 54 I/O pins, or start with a design that utilizes external shields to add I/O pin expansion. Or you could utilize matrix scanned keypads that can save on I/O pin Vs a little more complexity in the software. On surface not really a demanding application, just lots of little details to work out.
As far as the software side, It looks pretty simple. However I would need to know more about the pump operation. Does just commanding a relay on for a short pulse guarantee the correct amount gets dispensed, or does the relay have to stay on for the whole time period programmed, with the assumption that the pump will always dispense the same amount of material in that fixed time period?
There is no apparent feedback mechanism shown in your block diagram for actually measuring the product being delivered. What you show is called 'open loop' control where you make assumptions that parts of the system will always operate correctly and consistently given the same commands at the same specific time periods. A 'Closed loop' control system would include feedback measurements that might in this case be measuring the actual flow of material or weight the product being added. These 'process' measurements also allow warning alarms or automatic shutdown based on actual measurement Vs expected behaviour.
Bottom line is I think the Arduino platform will work just fine for your application. It's just a matter of details being researched, hardware build and sketch developed. Go for it. 8)